a6aab10
From 3d4ff1ba8419546490b464418223132529514033 Mon Sep 17 00:00:00 2001
a6aab10
From: Simon Kelley <simon@thekelleys.org.uk>
a6aab10
Date: Mon, 25 Sep 2017 18:52:50 +0100
a6aab10
Subject: [PATCH 4/9] Security fix, CVE-2017-14493, DHCPv6 - Stack buffer
a6aab10
 overflow.
a6aab10
a6aab10
Fix stack overflow in DHCPv6 code. An attacker who can send
a6aab10
a DHCPv6 request to dnsmasq can overflow the stack frame and
a6aab10
crash or control dnsmasq.
a6aab10
---
a6aab10
 src/rfc3315.c | 3 +++
a6aab10
 1 file changed, 3 insertions(+)
a6aab10
a6aab10
diff --git a/src/rfc3315.c b/src/rfc3315.c
a6aab10
index 1687931..920907c 100644
a6aab10
--- a/src/rfc3315.c
a6aab10
+++ b/src/rfc3315.c
a6aab10
@@ -206,6 +206,9 @@ static int dhcp6_maybe_relay(struct state *state, void *inbuff, size_t sz,
a6aab10
   /* RFC-6939 */
a6aab10
   if ((opt = opt6_find(opts, end, OPTION6_CLIENT_MAC, 3)))
a6aab10
     {
a6aab10
+      if (opt6_len(opt) - 2 > DHCP_CHADDR_MAX) {
a6aab10
+        return 0;
a6aab10
+      }
a6aab10
       state->mac_type = opt6_uint(opt, 0, 2);
a6aab10
       state->mac_len = opt6_len(opt) - 2;
a6aab10
       memcpy(&state->mac[0], opt6_ptr(opt, 2), state->mac_len);
a6aab10
-- 
a6aab10
2.9.5
a6aab10