pci: fix parsing of address without function number
If the last part of the PCI address (function number) is missing, the parsing was successful, assuming function 0. The call to strtoul is not returning an error in such a case, so an explicit check is inserted before. This bug has always been there in older parsing macros: - GET_PCIADDR_FIELD - GET_BLACKLIST_FIELD Fixes: af75078fece3 ("first public release") Cc: stable@dpdk.org Reported-by: Wisam Jaddo <wisamm@mellanox.com> Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
This commit is contained in:
parent
9eca8bd7a6
commit
31f19a9beb
@ -30,6 +30,10 @@ get_u8_pciaddr_field(const char *in, void *_u8, char dlm)
|
||||
uint8_t *u8 = _u8;
|
||||
char *end;
|
||||
|
||||
/* empty string is an error though strtoul() returns 0 */
|
||||
if (*in == '\0')
|
||||
return NULL;
|
||||
|
||||
errno = 0;
|
||||
val = strtoul(in, &end, 16);
|
||||
if (errno != 0 || end[0] != dlm || val > UINT8_MAX) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user