[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gpsd-dev] [PATCH 1/3] Fixes crash when quitting gpsmon in -a mode.
From: |
Fred Wright |
Subject: |
[gpsd-dev] [PATCH 1/3] Fixes crash when quitting gpsmon in -a mode. |
Date: |
Fri, 16 Sep 2016 18:18:26 -0700 |
There were two bugs in the alternate input code used in -a mode:
1) It was using strlen() instead of sizeof() to determine the
available space in the input buffer. This is uninitialized data,
making the result nondeterministic, though it would return zero
in the case observed.
2) It was failing to handle the NULL return from fgets() correctly,
resulting in a call to do_command() with a garbage argument. This
caused a segfault.
Also, casting the strlen/sizeof value to int was superfluous.
TESTED:
Typing a "q" in -a mode now outputs a prompt (an incorrect one,
but that's another story) and can then quits without crashing.
---
gpsmon.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/gpsmon.c b/gpsmon.c
index ea0991b..0a7c8eb 100644
--- a/gpsmon.c
+++ b/gpsmon.c
@@ -1439,8 +1439,9 @@ int main(int argc, char **argv)
(void)fputs(promptgen(), stdout);
(void)fputs("> ", stdout);
(void)putchar(inbuf[0]);
- cmdline = fgets(inbuf+1, (int)strlen(inbuf)-1, stdin);
- cmdline--;
+ cmdline = fgets(inbuf+1, sizeof(inbuf)-1, stdin);
+ if (cmdline)
+ cmdline--;
}
}
if (cmdline != NULL && !do_command(cmdline))
--
2.9.3
- [gpsd-dev] [PATCH 1/3] Fixes crash when quitting gpsmon in -a mode.,
Fred Wright <=