From 2964c4ee961c6c9c5e2dd182e2c436a0bf706420 Mon Sep 17 00:00:00 2001 From: uzlonewolf Date: Fri, 3 Dec 2021 16:05:36 -0800 Subject: [PATCH 1/2] Parse IP Addresses from JSON-like strings to allow better IPv6 address handling --- src/convert.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/convert.c b/src/convert.c index c97b7798..a50c78c3 100644 --- a/src/convert.c +++ b/src/convert.c @@ -1612,6 +1612,11 @@ static int _jsmn_get_item(struct mem_funcs *mf, const char *js, jsmntok_t *t, if (t->end < t->start) *r = GETDNS_RETURN_GENERIC_ERROR; + else if (_jsmn_get_ipdict(mf, js, t, &item->data.dict)) { + item->dtype = t_dict; + *r = GETDNS_RETURN_GOOD; + return 1; + } else if (!(item->data.bindata = GETDNS_MALLOC(*mf, getdns_bindata))) *r = GETDNS_RETURN_MEMORY_ERROR; From 2944ffc84497376193400e89be84f62f53d35420 Mon Sep 17 00:00:00 2001 From: uzlonewolf Date: Fri, 3 Dec 2021 18:54:42 -0800 Subject: [PATCH 2/2] Tighten up _getdns_ipaddr_dict_mf() so it does not grab random strings beginning with '*' --- src/convert.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/convert.c b/src/convert.c index a50c78c3..d7017b46 100644 --- a/src/convert.c +++ b/src/convert.c @@ -1189,7 +1189,7 @@ _getdns_ipaddr_dict_mf(struct mem_funcs *mf, const char *ipstr) tsig_name_str = ""; } } - if (*ipstr == '*') { + if (*ipstr == '*' && *(ipstr+1) == '\0') { getdns_dict_util_set_string(r, "address_type", "IPv6"); addr.size = 16; (void) memset(buf, 0, 16);