[CVE-2015-8899] Fix crash when empty address from DNS overlays A record from hosts 46/89046/1 accepted/tizen_3.0.m2_mobile accepted/tizen_3.0.m2_tv accepted/tizen_3.0.m2_wearable tizen_3.0.m2 tizen_3.0_tv accepted/tizen/3.0.m2/mobile/20170105.023648 accepted/tizen/3.0.m2/tv/20170105.024014 accepted/tizen/3.0.m2/wearable/20170105.024320 accepted/tizen/3.0/common/20161114.110523 accepted/tizen/3.0/ivi/20161011.043659 accepted/tizen/3.0/mobile/20161015.032533 accepted/tizen/3.0/tv/20161016.003723 accepted/tizen/3.0/wearable/20161015.081710 accepted/tizen/common/20160922.120630 accepted/tizen/ivi/20160922.233202 accepted/tizen/mobile/20160922.233153 accepted/tizen/tv/20160922.233159 accepted/tizen/unified/20170309.035232 accepted/tizen/wearable/20160922.233156 submit/tizen/20160922.020431 submit/tizen_3.0.m2/20170104.093752 submit/tizen_3.0_common/20161104.104000 submit/tizen_3.0_ivi/20161010.000001 submit/tizen_3.0_mobile/20161015.000001 submit/tizen_3.0_tv/20161015.000001 submit/tizen_3.0_wearable/20161015.000001 submit/tizen_unified/20170308.100412
authorSeonah Moon <seonah1.moon@samsung.com>
Thu, 22 Sep 2016 01:22:33 +0000 (10:22 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Thu, 22 Sep 2016 01:22:47 +0000 (10:22 +0900)
Dnsmasq before 2.76 allows remote servers to cause a denial of service (crash)
via a reply with an empty DNS address that has an (1) A or (2) AAAA record defined locally.

- CVE: https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8899
- Patch: http://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commit;h=41a8d9e99be9f2cc8b02051dd322cb45e0faac87

Change-Id: If86a54c0696fea852bb9bc2f8aeece6bd6bb1598
Signed-off-by: Seonah Moon <seonah1.moon@samsung.com>
src/cache.c

index 178d654..1b76b67 100644 (file)
@@ -481,7 +481,7 @@ struct crec *cache_insert(char *name, struct all_addr *addr,
         existing record is for an A or AAAA and
         the record we're trying to insert is the same, 
         just drop the insert, but don't error the whole process. */
-      if ((flags & (F_IPV4 | F_IPV6)) && (flags & F_FORWARD))
+      if ((flags & (F_IPV4 | F_IPV6)) && (flags & F_FORWARD) && addr)
        {
          if ((flags & F_IPV4) && (new->flags & F_IPV4) &&
              new->addr.addr.addr.addr4.s_addr == addr->addr.addr4.s_addr)