ares_parse_naptr_reply: check sufficient data 43/199243/1 tizen_4.0_tv
authorDavid Drysdale <drysdale@google.com>
Mon, 22 May 2017 09:54:10 +0000 (10:54 +0100)
committerJaehyun Kim <jeik01.kim@samsung.com>
Thu, 7 Feb 2019 13:11:32 +0000 (22:11 +0900)
Check that there is enough data for the required elements
of an NAPTR record (2 int16, 3 bytes for string lengths)
before processing a record.

Bug: https://c-ares.haxx.se/adv_20170620.html
Link: https://c-ares.haxx.se/CVE-2017-1000381.patch
Change-Id: I45f9d4916818b658bcec928f4bee2457ba2124b5
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
ares_parse_naptr_reply.c

index 0e37b02..6216ca7 100644 (file)
@@ -110,6 +110,12 @@ ares_parse_naptr_reply (const unsigned char *abuf, int alen,
           status = ARES_EBADRESP;
           break;
         }
+      /* RR must contain at least 7 bytes = 2 x int16 + 3 x name */
+      if (rr_len < 7)
+        {
+          status = ARES_EBADRESP;
+          break;
+        }
 
       /* Check if we are really looking at a NAPTR record */
       if (rr_class == C_IN && rr_type == T_NAPTR)
@@ -192,4 +198,3 @@ ares_parse_naptr_reply (const unsigned char *abuf, int alen,
 
   return ARES_SUCCESS;
 }
-