diff options
author | dtucker@openbsd.org <dtucker@openbsd.org> | 2020-08-28 03:15:52 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2020-08-31 14:34:34 +1000 |
commit | 72730249b38a676da94a1366b54a6e96e6928bcb (patch) | |
tree | 92c79e008280bdfbfa06f565925915bab1a24d2b | |
parent | 2a3a9822311a565a9df48ed3b6a3c972f462bd7d (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.c | 9 |
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 | } |