From: Karel Zak Date: Wed, 19 Jun 2024 09:19:49 +0000 (+0200) Subject: libmount: improving robustness in reading kernel messages X-Git-Tag: v2.42-start~292^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0389a9eae9281405d177d0eb9ad979d7bd47a7c6;p=thirdparty%2Futil-linux.git libmount: improving robustness in reading kernel messages * Ensure data termination from read() function * Allocate space for terminator using "sizeof(buf)-1" Signed-off-by: Karel Zak --- diff --git a/libmount/src/hook_mount.c b/libmount/src/hook_mount.c index 995de6144..f56479303 100644 --- a/libmount/src/hook_mount.c +++ b/libmount/src/hook_mount.c @@ -72,9 +72,15 @@ static void save_fd_messages(struct libmnt_context *cxt, int fd) mnt_context_set_errmsg(cxt, NULL); - while ((rc = read(fd, buf, sizeof(buf))) != -1) { - if (rc > 0 && buf[rc - 1] == '\n') - buf[rc - 1] = '\0'; + while ((rc = read(fd, buf, sizeof(buf) - 1)) != -1) { + + if (rc == 0) + continue; + if (buf[rc - 1] == '\n') + buf[--rc] = '\0'; + else + buf[rc] = '\0'; + DBG(CXT, ul_debug("message from kernel: \"%*s\"", rc, buf)); if (rc < 3 || strncmp((char *) buf, "e ", 2) != 0)