]> xenbits.xensource.com Git - xen.git/commitdiff
xl: print BDF parse errors
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 28 May 2010 07:12:15 +0000 (08:12 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 28 May 2010 07:12:15 +0000 (08:12 +0100)
When parsing BDFs for pci-attach/detach, check the return of scanf
rather than operating on random devices.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
tools/libxl/xl_cmdimpl.c

index 4e547c773074bfb7b0ddef2448937550fa9dd0f1..59194b61eaca75cfd924965a590a37b7133b0982 100644 (file)
@@ -1519,7 +1519,10 @@ void pcidetach(char *dom, char *bdf)
     find_domain(dom);
 
     memset(&pcidev, 0x00, sizeof(pcidev));
-    sscanf(bdf, PCI_BDF, &domain, &bus, &dev, &func);
+    if (sscanf(bdf, PCI_BDF, &domain, &bus, &dev, &func) != 4) {
+        fprintf(stderr, "pci-detach: malformed BDF specification \"%s\"\n", bdf);
+        exit(2);
+    }
     libxl_device_pci_init(&pcidev, domain, bus, dev, func, 0);
     libxl_device_pci_remove(&ctx, domid, &pcidev);
 }
@@ -1558,7 +1561,10 @@ void pciattach(char *dom, char *bdf, char *vs)
     find_domain(dom);
 
     memset(&pcidev, 0x00, sizeof(pcidev));
-    sscanf(bdf, PCI_BDF, &domain, &bus, &dev, &func);
+    if (sscanf(bdf, PCI_BDF, &domain, &bus, &dev, &func) != 4) {
+        fprintf(stderr, "pci-attach: malformed BDF specification \"%s\"\n", bdf);
+        exit(2);
+    }
     libxl_device_pci_init(&pcidev, domain, bus, dev, func, 0);
     libxl_device_pci_add(&ctx, domid, &pcidev);
 }