summaryrefslogtreecommitdiffstats
path: root/misc-utils/logger.c
diff options
context:
space:
mode:
authorSami Kerola2014-05-11 21:26:41 +0200
committerKarel Zak2014-05-12 13:07:06 +0200
commit047e2888a318ccad5f636edb6692cbdede80d14d (patch)
treeb6ba38a465eaaaaa629bbff365b207f81edd8c6d /misc-utils/logger.c
parentblkid: remove unused variable (diff)
downloadkernel-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.c7
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)