git: 4d997b340dd7 - stable/12 - When we have a command returned by zfs_nextboot() that is longer than command in the loader.conf, the latter needs to be nul terminated, otherwise garbage trailer left from zfs_nextboot() will be passed to parse_cmd() together with loader.conf command.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 08 Oct 2021 06:11:04 UTC
The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4d997b340dd7ee561b2f44bbcef3c532108640e6 commit 4d997b340dd7ee561b2f44bbcef3c532108640e6 Author: Gleb Smirnoff <glebius@FreeBSD.org> AuthorDate: 2020-08-20 20:31:47 +0000 Commit: Kyle Evans <kevans@FreeBSD.org> CommitDate: 2021-10-08 05:24:27 +0000 When we have a command returned by zfs_nextboot() that is longer than command in the loader.conf, the latter needs to be nul terminated, otherwise garbage trailer left from zfs_nextboot() will be passed to parse_cmd() together with loader.conf command. While here, reset cmd to empty string if read() returns error. (cherry picked from commit c7dd069c70d465298f14553d981bfe5e2ffd0459) --- stand/i386/zfsboot/zfsboot.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index e387d4a47c9d..81a6d74abc7b 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -248,7 +248,12 @@ main(void) fd = open(PATH_DOTCONFIG, O_RDONLY); if (fd != -1) { - read(fd, cmd, sizeof (cmd)); + ssize_t cmdlen; + + if ((cmdlen = read(fd, cmd, sizeof(cmd))) > 0) + cmd[cmdlen] = '\0'; + else + *cmd = '\0'; close(fd); }