diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/config.c b/src/config.c index b36afb1..9ae8466 100644 --- a/src/config.c +++ b/src/config.c @@ -730,14 +730,15 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr char *astr = malloc(strlen(str) + 1); char *delim; int l; + if (!astr || !strcpy(astr, str) || - (delim = strchr(astr, '/')) == NULL || (*(delim++) == 0) || + (delim = strchr(astr, '/')) == NULL || (*(delim++) = 0) || sscanf(delim, "%i", &l) == 0 || l > 128 || - inet_pton(AF_INET6, astr, &iface->pio_filter_addr) == 0) { + inet_pton(AF_INET6, astr, &iface->pio_filter_addr) == 0) iface->pio_filter_length = 0; - } else { + else iface->pio_filter_length = l; - } + if (astr) free(astr); } |