From: Ian Jackson Date: Thu, 8 Jul 2010 16:22:18 +0000 (+0100) Subject: tools/libxl/xl: fix for short BDF (without domain specified) X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~11813^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=84b1ed809c51b96dfefee394a4da932e7ec66cd9;p=xen.git tools/libxl/xl: fix for short BDF (without domain specified) 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 Contributed-by: Sergey Tovpeko Acked-by: Stefano Stabellini --- diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 984a2e420e..335cd1e58d 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -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;