From 24e3ede3dab15fcbf18d16ac09ae57ba4827c4b5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20Wei=C3=9Fschuh?= Date: Wed, 12 Jun 2024 23:32:15 +0200 Subject: [PATCH] lib/sysfs: zero-terminate result of sysfs_blkdev_get_devchain() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- lib/sysfs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; } -- 2.47.2