From c3dcea61b5a8fde21e96e1c16a27aeb2bcf91789 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Mon, 31 Dec 2018 13:41:24 +0100 Subject: [PATCH] - Error on illegal port values in WKS Thanks Ray Bellis --- str2host.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/str2host.c b/str2host.c index dd5cc09d..e42e7ebc 100644 --- a/str2host.c +++ b/str2host.c @@ -615,7 +615,7 @@ ldns_str2rdf_b32_ext(ldns_rdf **rd, const char *str) int i; /* first byte contains length of actual b32 data */ size_t slen = strlen(str); - uint32_t len = ldns_b32_pton_calculate_size(slen); + size_t len = ldns_b32_pton_calculate_size(slen); if (len > 255) { return LDNS_STATUS_INVALID_B32_EXT; } @@ -1148,7 +1148,15 @@ ldns_str2rdf_wks(ldns_rdf **rd, const char *str) if (serv) { serv_port = (int) ntohs((uint16_t) serv->s_port); } else { - serv_port = (uint16_t) atoi(token); + serv_port = atoi(token); + } + if (sev_port < 0 || sev_port > 65535) { + LDNS_FREE(bitmap); + LDNS_FREE(token); + ldns_buffer_free(str_buf); + free(proto_str); + free(lc_proto_str); + return LDNS_STATUS_INVALID_STR; } if (serv_port / 8 >= bm_len) { uint8_t *b2 = LDNS_XREALLOC(bitmap, uint8_t, (serv_port / 8) + 1); -- 2.47.3