DHCP_PAD = 0,
DHCP_NETMASK = 1,
DHCP_ROUTERS = 3,
- DHCP_DNS = 6,
DHCP_END = 255,
};
* it's malformed. :( */
while (options[i] != DHCP_END) {
__u8 tag = options[i++], len;
- __u32 value;
+ __u32 value = 0;
if (tag == DHCP_PAD)
continue;
len = options[i++];
- memcpy(&value, &options[i], len);
+ /* Clamp the maxium length of the memcpy() to the right size for
+ * value. */
+ if (len > sizeof(value))
+ memcpy(&value, &options[i], sizeof(value));
+ else
+ memcpy(&value, &options[i], len);
#if DEBUG
{
case FILE_DEVICE_BLOCK:
DEBUG_F("device is a block device\n");
return file_block_open(file, spec, spec->part);
+ case FILE_DEVICE_ISCSI:
+ DEBUG_F("device is a iSCSI device\n");
+ return file_block_open(file, spec, spec->part);
case FILE_DEVICE_NET:
DEBUG_F("device is a network device\n");
return file_net_open(file, spec);