diff options
author | Sami Kerola | 2014-05-11 21:26:41 +0200 |
---|---|---|
committer | Karel Zak | 2014-05-12 13:07:06 +0200 |
commit | 047e2888a318ccad5f636edb6692cbdede80d14d (patch) | |
tree | b6ba38a465eaaaaa629bbff365b207f81edd8c6d /misc-utils/logger.c | |
parent | blkid: remove unused variable (diff) | |
download | kernel-qcow2-util-linux-047e2888a318ccad5f636edb6692cbdede80d14d.tar.gz kernel-qcow2-util-linux-047e2888a318ccad5f636edb6692cbdede80d14d.tar.xz kernel-qcow2-util-linux-047e2888a318ccad5f636edb6692cbdede80d14d.zip |
logger: fail when io vector number exceeds maximum
Earlier version silently failed without logging anything.
$ logger --journald=/etc/services ; echo $?
1
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'misc-utils/logger.c')
-rw-r--r-- | misc-utils/logger.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/misc-utils/logger.c b/misc-utils/logger.c index f3bdc903b..fccba3880 100644 --- a/misc-utils/logger.c +++ b/misc-utils/logger.c @@ -37,6 +37,7 @@ */ #include <errno.h> +#include <limits.h> #include <unistd.h> #include <stdlib.h> #include <time.h> @@ -231,6 +232,8 @@ static int journald_entry(FILE *fp) } if (lines == vectors) { vectors *= 2; + if (IOV_MAX < vectors) + errx(EXIT_FAILURE, _("maximum input lines (%d) exceeded"), IOV_MAX); iovec = xrealloc(iovec, vectors * sizeof(struct iovec)); } iovec[lines].iov_base = buf; @@ -415,7 +418,9 @@ int main(int argc, char **argv) int ret = journald_entry(jfd); if (stdin != jfd) fclose(jfd); - return ret ? EXIT_FAILURE : EXIT_SUCCESS; + if (ret) + errx(EXIT_FAILURE, "journald entry could not be wrote"); + return EXIT_SUCCESS; } #endif if (server) |