david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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>
This commit is contained in:
Michael Brown 2016-03-29 20:57:03 +01:00
parent ef1c4b1c90
commit 70509e6a03
1 changed files with 2 additions and 1 deletions

View File

@ -141,7 +141,8 @@ static int netdev_fetch_bustype ( struct net_device *netdev, void *data,
assert ( desc->bus_type < ( sizeof ( bustypes ) /
sizeof ( bustypes[0] ) ) );
bustype = bustypes[desc->bus_type];
assert ( bustype != NULL );
if ( ! bustype )
return -ENOENT;
strncpy ( data, bustype, len );
return strlen ( bustype );
}