# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1275030735 -3600
# Node ID d86065bbb312cdf180a78ddecc7da18659ef6570
# Parent 5f6b780d09260c83a9a156bbd6c8abdefd5eb17c
xl: print BDF parse errors
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@xxxxxxxxxx>
---
tools/libxl/xl_cmdimpl.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff -r 5f6b780d0926 -r d86065bbb312 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Fri May 28 08:11:47 2010 +0100
+++ b/tools/libxl/xl_cmdimpl.c Fri May 28 08:12:15 2010 +0100
@@ -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, cha
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);
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|