]> xenbits.xensource.com Git - xen.git/commitdiff
tools/libxl/xl: fix for short BDF (without domain specified)
authorIan Jackson <Ian.Jackson@eu.citrix.com>
Thu, 8 Jul 2010 16:22:18 +0000 (17:22 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Thu, 8 Jul 2010 16:22:18 +0000 (17:22 +0100)
Check that BDF have been parsed correctly.  Before this fix, BDF could
be parsed incorrectly if user omitted the domain.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Contributed-by: Sergey Tovpeko <tsv.devel@gmail.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
tools/libxl/xl_cmdimpl.c

index 984a2e420e83059a667f651a3ec585e96ec7dd36..335cd1e58d59dbfa9299de148b137f4c0e0fb747 100644 (file)
@@ -833,9 +833,12 @@ skip_vfb:
             p = strtok(buf2, ",");
             if (!p)
                 goto skip_pci;
-            if (!sscanf(p, PCI_BDF_VDEVFN, &domain, &bus, &dev, &func, &vdevfn)) {
-                sscanf(p, "%02x:%02x.%01x@%02x", &bus, &dev, &func, &vdevfn);
+            if (sscanf(p, PCI_BDF_VDEVFN, &domain, &bus, &dev, &func, &vdevfn) < 4) {
                 domain = 0;
+                if (sscanf(p, "%02x:%02x.%01x@%02x", &bus, &dev, &func, &vdevfn) < 3) {
+                    fprintf(stderr,"xl: Unable to parse pci bdf (%s)\n", p);
+                    goto skip_pci;
+                }
             }
             libxl_device_pci_init(*pcidevs + *num_pcidevs, domain, bus, dev, func, vdevfn);
             (*pcidevs)[*num_pcidevs].msitranslate = pci_msitranslate;