diff options
author | Marc-Antoine Perennou | 2011-07-18 19:37:22 +0200 |
---|---|---|
committer | Karel Zak | 2011-07-18 23:46:45 +0200 |
commit | 730d5e7761e738983e4df1e34d80fd2b06e575e6 (patch) | |
tree | 2cabf6b5033540f7b345c3644bb132bc67f4987b /sys-utils/dmesg.c | |
parent | mkfs.bfs: cleanu p --version output (diff) | |
download | kernel-qcow2-util-linux-730d5e7761e738983e4df1e34d80fd2b06e575e6.tar.gz kernel-qcow2-util-linux-730d5e7761e738983e4df1e34d80fd2b06e575e6.tar.xz kernel-qcow2-util-linux-730d5e7761e738983e4df1e34d80fd2b06e575e6.zip |
dmesg: fix segfault
An element declared as size_t cannot be detected as negative (len < 0)
is always false.
This can lead to an infinite loop causing a segmentation fault.
Check if len is equal to -1 or -2 instead
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
Diffstat (limited to 'sys-utils/dmesg.c')
-rw-r--r-- | sys-utils/dmesg.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c index 867581d81..d7cf95ba0 100644 --- a/sys-utils/dmesg.c +++ b/sys-utils/dmesg.c @@ -367,7 +367,7 @@ static void safe_fwrite(const char *buf, size_t size, FILE *out) if (len == 0) /* L'\0' */ return; - if (len < 0) { /* invalid sequence */ + if (len == (size_t)-1 || len == (size_t)-2) { /* invalid sequence */ memset(&s, 0, sizeof (s)); len = hex = 1; |