In the display_pmd_info_strings function, the script parses the section until to find a byte between 32 and 127, and get all data until a byte equals to 0. After, it searches "PMD_INFO_STRING" in the data and passes the whole string in the parse_pmd_info_string function, which split the string with "=" and convert it in python dict with json.loads().
But the string may contain a "=" before "PMD_INFO_STRING", so it is not correctly split and will lead to an error (json.decoder.JSONDecodeError). Example of a string encountered that leads to an error: "Ag%=C£°ÐÊ+Ë®{0´wË-£0òjB·;¾¬úPMD_INFO_STRING= {"name" : "net_octeontx", "params" : "nr_port=<int> ", "pci_ids" : []}" Fixes: c67c9a5c646a ("tools: query binaries for HW and other support information") Cc: sta...@dpdk.org Signed-off-by: Julien Massonneau <julien.massonn...@6wind.com> --- usertools/dpdk-pmdinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usertools/dpdk-pmdinfo.py b/usertools/dpdk-pmdinfo.py index 95fb0111d..263465086 100755 --- a/usertools/dpdk-pmdinfo.py +++ b/usertools/dpdk-pmdinfo.py @@ -349,7 +349,7 @@ def display_pmd_info_strings(self, section_spec): mystring = force_unicode(data[dataptr:endptr]) rc = mystring.find("PMD_INFO_STRING") if (rc != -1): - self.parse_pmd_info_string(mystring) + self.parse_pmd_info_string(mystring[rc:]) dataptr = endptr -- 2.28.0