summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordtucker@openbsd.org <dtucker@openbsd.org>2020-08-28 03:15:52 +0000
committerDamien Miller <djm@mindrot.org>2020-08-31 14:34:34 +1000
commit72730249b38a676da94a1366b54a6e96e6928bcb (patch)
tree92c79e008280bdfbfa06f565925915bab1a24d2b
parent2a3a9822311a565a9df48ed3b6a3c972f462bd7d (diff)
upstream: Check that the addresses supplied to Match Address and
Match LocalAddress are valid when parsing in config-test mode. This will catch address/mask mismatches before they cause problems at runtime. Found by Daniel Stocker, ok djm@ OpenBSD-Commit-ID: 2d0b10c69fad5d8fda4c703e7c6804935289378b
-rw-r--r--servconf.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/servconf.c b/servconf.c
index 1bc7ee31a..2ce04cf14 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,5 @@
1 1
2/* $OpenBSD: servconf.c,v 1.368 2020/08/27 01:07:09 djm Exp $ */ 2/* $OpenBSD: servconf.c,v 1.369 2020/08/28 03:15: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
@@ -1119,6 +1119,9 @@ match_cfg_line(char **condition, int line, struct connection_info *ci)
1119 "%.100s' at line %d", ci->host, arg, line); 1119 "%.100s' at line %d", ci->host, arg, line);
1120 } else if (strcasecmp(attrib, "address") == 0) { 1120 } else if (strcasecmp(attrib, "address") == 0) {
1121 if (ci == NULL || (ci->test && ci->address == NULL)) { 1121 if (ci == NULL || (ci->test && ci->address == NULL)) {
1122 if (addr_match_list(NULL, arg) != 0)
1123 fatal("Invalid Match address argument "
1124 "'%s' at line %d", arg, line);
1122 result = 0; 1125 result = 0;
1123 continue; 1126 continue;
1124 } 1127 }
@@ -1138,6 +1141,10 @@ match_cfg_line(char **condition, int line, struct connection_info *ci)
1138 } 1141 }
1139 } else if (strcasecmp(attrib, "localaddress") == 0){ 1142 } else if (strcasecmp(attrib, "localaddress") == 0){
1140 if (ci == NULL || (ci->test && ci->laddress == NULL)) { 1143 if (ci == NULL || (ci->test && ci->laddress == NULL)) {
1144 if (addr_match_list(NULL, arg) != 0)
1145 fatal("Invalid Match localaddress "
1146 "argument '%s' at line %d", arg,
1147 line);
1141 result = 0; 1148 result = 0;
1142 continue; 1149 continue;
1143 } 1150 }