Fix potentially unterminated string after strncpy() call
[fio.git] / diskutil.c
index cbde42e908f71629cd9575e783fb4d390554f369..1b4accb31d5c669b6ae09638b60c1d4a840ddad6 100644 (file)
@@ -239,6 +239,7 @@ static void find_add_disk_slaves(struct thread_data *td, char *path,
                linklen = readlink(temppath, slavepath, PATH_MAX - 1);
                if (linklen  < 0) {
                        perror("readlink() for slave device.");
+                       closedir(dirhandle);
                        return;
                }
                slavepath[linklen] = '\0';
@@ -246,6 +247,7 @@ static void find_add_disk_slaves(struct thread_data *td, char *path,
                sprintf(temppath, "%s/%s/dev", slavesdir, slavepath);
                if (read_block_dev_entry(temppath, &majdev, &mindev)) {
                        perror("Error getting slave device numbers.");
+                       closedir(dirhandle);
                        return;
                }
 
@@ -295,7 +297,7 @@ static struct disk_util *disk_util_add(struct thread_data *td, int majdev,
                sfree(du);
                return NULL;
        }
-       strncpy((char *) du->dus.name, basename(path), FIO_DU_NAME_SZ);
+       strncpy((char *) du->dus.name, basename(path) - 1, FIO_DU_NAME_SZ);
        du->sysfs_root = path;
        du->major = majdev;
        du->minor = mindev;