summaryrefslogtreecommitdiff
path: root/servconf.c
diff options
context:
space:
mode:
authordtucker@openbsd.org <dtucker@openbsd.org>2019-01-24 02:34:52 +0000
committerDarren Tucker <dtucker@dtucker.net>2019-01-24 14:36:44 +1100
commit281ce042579b834cdc1e74314f1fb2eeb75d2612 (patch)
tree5eb0e7448cf3cef7dd4a04ecb9be233099037201 /servconf.c
parentd05ea255678d9402beda4416cd0360f3e5dfe938 (diff)
upstream: Always initialize 2nd arg to hpdelim2. It populates that
*ONLY IF* there's a delimiter. If there's not (the common case) it checked uninitialized memory, which usually passed, but if not would cause spurious failures when the uninitialized memory happens to contain "/". ok deraadt. OpenBSD-Commit-ID: 4291611eaf2a53d4c92f4a57c7f267c9f944e0d3
Diffstat (limited to 'servconf.c')
-rw-r--r--servconf.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/servconf.c b/servconf.c
index 1562bd875..d9680aba1 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,5 @@
1 1
2/* $OpenBSD: servconf.c,v 1.347 2019/01/23 21:50:56 dtucker Exp $ */ 2/* $OpenBSD: servconf.c,v 1.348 2019/01/24 02:34:52 dtucker Exp $ */
3/* 3/*
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5 * All rights reserved 5 * All rights reserved
@@ -896,6 +896,7 @@ process_permitopen_list(struct ssh *ssh, ServerOpCodes opcode,
896 /* Otherwise treat it as a list of permitted host:port */ 896 /* Otherwise treat it as a list of permitted host:port */
897 for (i = 0; i < num_opens; i++) { 897 for (i = 0; i < num_opens; i++) {
898 oarg = arg = xstrdup(opens[i]); 898 oarg = arg = xstrdup(opens[i]);
899 ch = '\0';
899 host = hpdelim2(&arg, &ch); 900 host = hpdelim2(&arg, &ch);
900 if (host == NULL || ch == '/') 901 if (host == NULL || ch == '/')
901 fatal("%s: missing host in %s", __func__, what); 902 fatal("%s: missing host in %s", __func__, what);
@@ -1214,7 +1215,7 @@ process_server_config_line(ServerOptions *options, char *line,
1214 const char *filename, int linenum, int *activep, 1215 const char *filename, int linenum, int *activep,
1215 struct connection_info *connectinfo) 1216 struct connection_info *connectinfo)
1216{ 1217{
1217 char *cp, ***chararrayptr, **charptr, *arg, *arg2, *p; 1218 char ch, *cp, ***chararrayptr, **charptr, *arg, *arg2, *p;
1218 int cmdline = 0, *intptr, value, value2, n, port; 1219 int cmdline = 0, *intptr, value, value2, n, port;
1219 SyslogFacility *log_facility_ptr; 1220 SyslogFacility *log_facility_ptr;
1220 LogLevel *log_level_ptr; 1221 LogLevel *log_level_ptr;
@@ -1314,8 +1315,8 @@ process_server_config_line(ServerOptions *options, char *line,
1314 port = 0; 1315 port = 0;
1315 p = arg; 1316 p = arg;
1316 } else { 1317 } else {
1317 char ch;
1318 arg2 = NULL; 1318 arg2 = NULL;
1319 ch = '\0';
1319 p = hpdelim2(&arg, &ch); 1320 p = hpdelim2(&arg, &ch);
1320 if (p == NULL || ch == '/') 1321 if (p == NULL || ch == '/')
1321 fatal("%s line %d: bad address:port usage", 1322 fatal("%s line %d: bad address:port usage",
@@ -1944,9 +1945,8 @@ process_server_config_line(ServerOptions *options, char *line,
1944 */ 1945 */
1945 xasprintf(&arg2, "*:%s", arg); 1946 xasprintf(&arg2, "*:%s", arg);
1946 } else { 1947 } else {
1947 char ch;
1948
1949 arg2 = xstrdup(arg); 1948 arg2 = xstrdup(arg);
1949 ch = '\0';
1950 p = hpdelim2(&arg, &ch); 1950 p = hpdelim2(&arg, &ch);
1951 if (p == NULL || ch == '/') { 1951 if (p == NULL || ch == '/') {
1952 fatal("%s line %d: missing host in %s", 1952 fatal("%s line %d: missing host in %s",