From: Michael Tremer Date: Tue, 2 Jan 2018 17:07:03 +0000 (+0000) Subject: Prevent segmentation fault when no prefix is present X-Git-Tag: 0.9.0~134 X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Flibloc.git;a=commitdiff_plain;h=b61f14fc8d08c9f9698d58fa430842da60d7a09f Prevent segmentation fault when no prefix is present Signed-off-by: Michael Tremer --- diff --git a/src/network.c b/src/network.c index 11b68dd..dc1775a 100644 --- a/src/network.c +++ b/src/network.c @@ -119,7 +119,9 @@ static int parse_address(struct loc_ctx* ctx, const char* string, struct in6_add LOC_EXPORT int loc_network_new_from_string(struct loc_ctx* ctx, struct loc_network** network, const char* address_string) { struct in6_addr start_address; + unsigned int prefix = 0; char* prefix_string; + int r = 1; // Make a copy of the string to work on it char* buffer = strdup(address_string); @@ -128,11 +130,16 @@ LOC_EXPORT int loc_network_new_from_string(struct loc_ctx* ctx, struct loc_netwo // Split address and prefix address_string = strsep(&prefix_string, "/"); - // Convert prefix to integer - unsigned int prefix = strtol(prefix_string, NULL, 10); + // Did we find a prefix? + if (prefix_string) { + // Convert prefix to integer + prefix = strtol(prefix_string, NULL, 10); - // Parse the address - int r = parse_address(ctx, address_string, &start_address); + if (prefix) { + // Parse the address + r = parse_address(ctx, address_string, &start_address); + } + } // Free temporary buffer free(buffer);