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.40.2~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e37fb6e4b71367f9fd4b719a1ab23ad88cbc593;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 (cherry picked from commit 0389a9eae9281405d177d0eb9ad979d7bd47a7c6) --- diff --git a/libmount/src/hook_mount.c b/libmount/src/hook_mount.c index 10b226636..af84f755e 100644 --- a/libmount/src/hook_mount.c +++ b/libmount/src/hook_mount.c @@ -73,9 +73,15 @@ static void save_fd_messages(struct libmnt_context *cxt, int fd) free(cxt->syscall_errmsg); cxt->syscall_errmsg = 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)