From c58f66878fd3fad91178744e70f18ea050c521d4 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Fri, 27 Dec 2019 14:04:16 -0500 Subject: [PATCH] Fix bchu_fs_get_devices() --- libbcachefs.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libbcachefs.c b/libbcachefs.c index 89c203a1..8f656a27 100644 --- a/libbcachefs.c +++ b/libbcachefs.c @@ -1114,7 +1114,7 @@ dev_names bchu_fs_get_devices(struct bchfs_handle fs) darray_init(devs); while ((errno = 0), (d = readdir(dir))) { - struct dev_name n; + struct dev_name n = { 0, NULL, NULL }; if (sscanf(d->d_name, "dev-%u", &n.idx) != 1) continue; @@ -1122,9 +1122,12 @@ dev_names bchu_fs_get_devices(struct bchfs_handle fs) char *block_attr = mprintf("dev-%u/block", n.idx); char sysfs_block_buf[4096]; - if (readlinkat(fs.sysfs_fd, block_attr, - sysfs_block_buf, sizeof(sysfs_block_buf)) > 0) + ssize_t r = readlinkat(fs.sysfs_fd, block_attr, + sysfs_block_buf, sizeof(sysfs_block_buf)); + if (r > 0) { + sysfs_block_buf[r] = '\0'; n.dev = strdup(basename(sysfs_block_buf)); + } free(block_attr);