[dpdk-dev] [PATCH] pci: fix parsing of address without function number
Thomas Monjalon
thomas at monjalon.net
Mon Nov 12 00:58:56 CET 2018
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 at dpdk.org
Reported-by: Wisam Jaddo <wisamm at mellanox.com>
Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
---
lib/librte_pci/rte_pci.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lib/librte_pci/rte_pci.c b/lib/librte_pci/rte_pci.c
index 530738dbd..f400178bb 100644
--- a/lib/librte_pci/rte_pci.c
+++ b/lib/librte_pci/rte_pci.c
@@ -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) {
--
2.19.0
More information about the dev
mailing list