int target_conflict;
memset(&arp, 0, sizeof(arp));
- bytes = 0;
bytes = read(dhcp_client->listener_sockfd, &arp, sizeof(arp));
if (bytes < 0)
return bytes;
uint8_t *option;
char *str;
+ if (value == NULL || len < 4)
+ return NULL;
+
iaid = get_uint32(&value[0]);
if (dhcp_client->iaid != iaid)
return NULL;
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 */
re = dhcp_recv_l3_packet(&packet,
dhcp_client->listener_sockfd);
} else if (dhcp_client->listen_mode == L_ARP) {
- re = ipv4ll_recv_arp_packet(dhcp_client);
+ ipv4ll_recv_arp_packet(dhcp_client);
return TRUE;
}
else
return TRUE;
if (dhcp_client->type == G_DHCP_IPV6) {
+ if (packet6 == NULL)
+ return TRUE;
+
count = 0;
client_id = dhcpv6_get_option(packet6, pkt_len,
G_DHCPV6_CLIENTID, &option_len, &count);
} else
dhcp_client->status_code = 0;
- } else
+ } else {
message_type = dhcp_get_option(&packet, DHCP_MESSAGE_TYPE);
+ if (message_type == NULL)
+ return TRUE;
+ }
if (message_type == NULL && client_id == NULL)
/* No message type / client id option, ignore package */