]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
node_device: fix possible non-terminated string
authorStefan Berger <stefanb@linux.vnet.ibm.com>
Fri, 4 May 2012 17:22:22 +0000 (13:22 -0400)
committerStefan Berger <stefanb@us.ibm.com>
Fri, 4 May 2012 17:22:22 +0000 (13:22 -0400)
Error: STRING_NULL:
/libvirt/src/node_device/node_device_linux_sysfs.c:80:
string_null_argument: Function "saferead" does not terminate string "*buf".
/libvirt/src/util/util.c:101:
string_null_argument: Function "read" fills array "*buf" with a non-terminated string.
/libvirt/src/node_device/node_device_linux_sysfs.c:87:
string_null: Passing unterminated string "buf" to a function expecting a null-terminated string.

src/node_device/node_device_linux_sysfs.c

index 380be9c61be1b6cf66a21c15dd0737572f74060f..6df73a389bc2674711d6593a8d85642bf3ba9cbb 100644 (file)
@@ -70,14 +70,13 @@ int read_wwn_linux(int host, const char *file, char **wwn)
 {
     char *p = NULL;
     int fd = -1, retval = 0;
-    char buf[64];
+    char buf[65] = "";
 
     if (open_wwn_file(LINUX_SYSFS_FC_HOST_PREFIX, host, file, &fd) < 0) {
         goto out;
     }
 
-    memset(buf, 0, sizeof(buf));
-    if (saferead(fd, buf, sizeof(buf)) < 0) {
+    if (saferead(fd, buf, sizeof(buf) - 1) < 0) {
         retval = -1;
         VIR_DEBUG("Failed to read WWN for host%d '%s'",
                   host, file);