mirror of https://github.com/ipxe/ipxe.git
[netdevice] Return ENOENT for an unknown bus type
It is possible for the preloaded UNDI device to end up with no specified bus type, since it may not be recognised as either a PCI or an ISAPnP device. This will result in a bus type value of zero, which currently results in NULL being treated as a string pointer by netdev_fetch_bustype(). Fix by returning ENOENT if an unknown bus type is specified. Reported-by: Todd Stansell <todd@stansell.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/52/head
parent
ef1c4b1c90
commit
70509e6a03
|
@ -141,7 +141,8 @@ static int netdev_fetch_bustype ( struct net_device *netdev, void *data,
|
||||||
assert ( desc->bus_type < ( sizeof ( bustypes ) /
|
assert ( desc->bus_type < ( sizeof ( bustypes ) /
|
||||||
sizeof ( bustypes[0] ) ) );
|
sizeof ( bustypes[0] ) ) );
|
||||||
bustype = bustypes[desc->bus_type];
|
bustype = bustypes[desc->bus_type];
|
||||||
assert ( bustype != NULL );
|
if ( ! bustype )
|
||||||
|
return -ENOENT;
|
||||||
strncpy ( data, bustype, len );
|
strncpy ( data, bustype, len );
|
||||||
return strlen ( bustype );
|
return strlen ( bustype );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue