diff options
author | Robert Bartel <r.bartel@gmx.net> | 2023-03-11 22:38:42 +0000 |
---|---|---|
committer | Paul Mackerras <paulus@ozlabs.org> | 2023-03-17 20:03:15 +1100 |
commit | 1fe5196b10fc30b1dfb8b4b0ac5bf2b6fa49c297 (patch) | |
tree | f7a89cf83bc4840bb1049655ed0f28fd6408bb40 | |
parent | 6292210a9d14c0d947a5c3fb10f0d289815cd24f (diff) | |
download | ppp-1fe5196b10fc30b1dfb8b4b0ac5bf2b6fa49c297.tar.gz |
Fixing a few more memory leaks in chat.c
Running Valgrind memcheck tool on chat.c while communicating with a
modem found additional memory leaks. These fixes plumb those.
Signed-off-by: Robert Bartel <r.bartel@gmx.net>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
-rw-r--r-- | chat/chat.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/chat/chat.c b/chat/chat.c index a5bfb9f..fa67fd2 100644 --- a/chat/chat.c +++ b/chat/chat.c @@ -1344,10 +1344,10 @@ int get_string(register char *string) char temp[STR_LEN]; int c, printed = 0, len, minlen; register char *s = temp, *end = s + STR_LEN; - char *logged = temp; + char *s1, *logged = temp; fail_reason = (char *)0; - string = clean(string, 0); + string = s1 = clean(string, 0); len = strlen(string); minlen = (len > sizeof(fail_buffer)? len: sizeof(fail_buffer)) - 1; @@ -1357,12 +1357,14 @@ int get_string(register char *string) if (len > STR_LEN) { msgf("expect string is too long"); exit_code = 1; + free(s1); return 0; } if (len == 0) { if (verbose) msgf("got it"); + free(s1); return (1); } @@ -1410,6 +1412,7 @@ int get_string(register char *string) strftime (report_buffer, 20, "%b %d %H:%M:%S ", tm_now); strcat (report_buffer, report_string[n]); + free(report_string[n]); report_string[n] = (char *) NULL; report_gathering = 1; break; @@ -1441,6 +1444,7 @@ int get_string(register char *string) alarm(0); alarmed = 0; + free(s1); return (1); } @@ -1457,6 +1461,7 @@ int get_string(register char *string) alarmed = 0; exit_code = n + 4; strcpy(fail_reason = fail_buffer, abort_string[n]); + free(s1); return (0); } } @@ -1488,6 +1493,7 @@ int get_string(register char *string) exit_code = 3; alarmed = 0; + free(s1); return (0); } |