]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Skip incorrect USB devices.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 16 May 2011 00:39:25 +0000 (02:39 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 16 May 2011 00:39:25 +0000 (02:39 +0200)
* grub-core/bus/usb/usb.c (grub_usb_device_initialize): Fail if
configcnt == 0.
* include/grub/usb.h (grub_usb_err_t): New enum value
GRUB_USB_ERR_BADDEVICE.

ChangeLog
grub-core/bus/usb/usb.c
include/grub/usb.h

index d0b3b1a1146531aa12c6b55723621c4446f0ff55..18a95a58e2396c1d84d40aa0458f3d2bb2ec76eb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-05-16  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Skip incorrect USB devices.
+
+       * grub-core/bus/usb/usb.c (grub_usb_device_initialize): Fail if
+       configcnt == 0.
+       * include/grub/usb.h (grub_usb_err_t): New enum value
+       GRUB_USB_ERR_BADDEVICE.
+
 2011-05-16  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Fuloong video init support.
index 005d3bcf0ef6199a79444b4e7c7fc56fcf605c58..cde57ced8750edae7c2bd573638fb490c0fb16df 100644 (file)
@@ -185,6 +185,12 @@ grub_usb_device_initialize (grub_usb_device_t dev)
   for (i = 0; i < 8; i++)
     dev->config[i].descconf = NULL;
 
+  if (descdev->configcnt == 0)
+    {
+      err = GRUB_USB_ERR_BADDEVICE;
+      goto fail;
+    }    
+
   for (i = 0; i < descdev->configcnt; i++)
     {
       int pos;
index 6f838e4f943a7d871e3b413bfafc55326b8eef84..ee133dbf51926bdd5d3e0a260cf478ef83008a96 100644 (file)
@@ -38,7 +38,8 @@ typedef enum
     GRUB_USB_ERR_BABBLE,
     GRUB_USB_ERR_TIMEOUT,
     GRUB_USB_ERR_BITSTUFF,
-    GRUB_USB_ERR_UNRECOVERABLE
+    GRUB_USB_ERR_UNRECOVERABLE,
+    GRUB_USB_ERR_BADDEVICE
   } grub_usb_err_t;
 
 typedef enum