From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: [PATCH] xl: print BDF parse errors Date: Thu, 27 May 2010 12:17:44 -0700 Message-ID: <4BFEC558.3080005@goop.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Xen-devel Cc: Vincent Hanquez , Ian Jackson , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org When parsing BDFs for pci-attach/detach, check the return of scanf rather than operating on random devices. Signed-off-by: Jeremy Fitzhardinge diff -r 67dd34a9bb71 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Thu May 27 11:59:37 2010 -0700 +++ b/tools/libxl/xl_cmdimpl.c Thu May 27 12:17:34 2010 -0700 @@ -1519,7 +1519,10 @@ 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 @@ 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); }