gdhcp: Add option and length checks
authorPatrik Flykt <patrik.flykt@linux.intel.com>
Thu, 3 May 2012 13:28:41 +0000 (16:28 +0300)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Fri, 4 May 2012 09:53:34 +0000 (12:53 +0300)
gdhcp/client.c

index 3d27b4a..b9f8da6 100644 (file)
@@ -1596,6 +1596,9 @@ static GList *get_addresses(GDHCPClient *dhcp_client,
        uint8_t *option;
        char *str;
 
+       if (value == NULL || len < 4)
+               return NULL;
+
        iaid = get_uint32(&value[0]);
        if (dhcp_client->iaid != iaid)
                return NULL;
@@ -1700,6 +1703,9 @@ static GList *get_dhcpv6_option_value_list(GDHCPClient *dhcp_client,
        char *str;
        int i;
 
+       if (value == NULL)
+               return NULL;
+
        switch (code) {
        case G_DHCPV6_DNS_SERVERS:      /* RFC 3646, chapter 3 */
        case G_DHCPV6_SNTP_SERVERS:     /* RFC 4075, chapter 4 */