From: Thomas Weißschuh Date: Wed, 12 Jun 2024 21:32:15 +0000 (+0200) Subject: lib/sysfs: zero-terminate result of sysfs_blkdev_get_devchain() X-Git-Tag: v2.42-start~296 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=24e3ede3dab15fcbf18d16ac09ae57ba4827c4b5;p=thirdparty%2Futil-linux.git lib/sysfs: zero-terminate result of sysfs_blkdev_get_devchain() sysfs_blkdev_get_devchain() does not zero-terminate its result, but the caller expects a C-string. Use ul_buffer_get_string() which includes a trailing zero-byte. Now it's also valid for sz and bufsz to be equal. See #3088. Signed-off-by: Thomas Weißschuh --- diff --git a/lib/sysfs.c b/lib/sysfs.c index e7294e6b1..ac9c5c3bf 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -404,8 +404,8 @@ char *sysfs_blkdev_get_devchain(struct path_cxt *pc, char *buf, size_t bufsz) ul_buffer_append_string(&tmp, _PATH_SYS_DEVBLOCK "/"); ul_buffer_append_data(&tmp, buf, ssz); - p = ul_buffer_get_data(&tmp, &sz, NULL); - if (p && sz < bufsz) { + p = ul_buffer_get_string(&tmp, &sz, NULL); + if (p && sz <= bufsz) { memcpy(buf, p, sz); res = buf; }