/* Get the required BPF buffer length from the kernel. */
if (ioctl(fd, BIOCGBLEN, &buf_len) == -1)
goto eexit;
- if (iface->buffer_size != buf_len) {
+ if (iface->buffer_size != (size_t)buf_len) {
free(iface->buffer);
iface->buffer_size = buf_len;
iface->buffer = xmalloc(buf_len);
else if ((size_t)bytes < sizeof(packet))
return -1;
iface->buffer_len = bytes;
+ iface->buffer_pos = 0;
}
bytes = -1;
memcpy(&packet, iface->buffer + iface->buffer_pos,
}
if (handle_dhcp(state, &dhcp, options) == 0)
return 0;
- } while (iface->buffer_pos != 0);
+ } while (iface->buffer_len != 0);
free(dhcp);
return -1;
hwaddr_ntoa((unsigned char *)&reply_mac, (size_t)reply.ar_hln));
retval = -1;
goto eexit;
- } while (iface->buffer_pos != 0);
+ } while (iface->buffer_len != 0);
}
eexit: