Parcourir la source

[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>
tags/v1.20.1
Michael Brown il y a 9 ans
Parent
révision
70509e6a03
1 fichiers modifiés avec 2 ajouts et 1 suppressions
  1. 2
    1
      src/net/netdev_settings.c

+ 2
- 1
src/net/netdev_settings.c Voir le fichier

141
 	assert ( desc->bus_type < ( sizeof ( bustypes ) /
141
 	assert ( desc->bus_type < ( sizeof ( bustypes ) /
142
 				    sizeof ( bustypes[0] ) ) );
142
 				    sizeof ( bustypes[0] ) ) );
143
 	bustype = bustypes[desc->bus_type];
143
 	bustype = bustypes[desc->bus_type];
144
-	assert ( bustype != NULL );
144
+	if ( ! bustype )
145
+		return -ENOENT;
145
 	strncpy ( data, bustype, len );
146
 	strncpy ( data, bustype, len );
146
 	return strlen ( bustype );
147
 	return strlen ( bustype );
147
 }
148
 }

Chargement…
Annuler
Enregistrer