Incorrect inquiry vendor length in hds prioritizer
authorHannes Reinecke <hare@suse.de>
Tue, 8 Jan 2013 13:53:51 +0000 (14:53 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Tue, 8 Jan 2013 22:34:57 +0000 (23:34 +0100)
The inquiry vendor length is 8 bytes, but snprintf writes
the given number of bytes _including_ the NULL byte. So
we need to supply a 9 byte buffer here.

Signed-off-by: Hannes Reinecke <hare@suse.de>
libmultipath/prioritizers/hds.c

index 5d75f84..f748707 100644 (file)
@@ -87,7 +87,7 @@
 int hds_modular_prio (const char *dev, int fd)
 {
        int k;
-       char vendor[8];
+       char vendor[9];
        char product[32];
        char serial[32];
        char ldev[32];
@@ -125,7 +125,7 @@ int hds_modular_prio (const char *dev, int fd)
                return -1;
        }
 
-       snprintf (vendor, 8, "%.8s", inqBuffp + 8);
+       snprintf (vendor, 9, "%.8s", inqBuffp + 8);
        snprintf (product, 17, "%.16s", inqBuffp + 16);
        snprintf (serial, 5, "%.4s", inqBuffp + 40);
        snprintf (ldev, 5, "%.4s", inqBuffp + 44);