summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bartel <r.bartel@gmx.net>2023-03-11 22:38:42 +0000
committerPaul Mackerras <paulus@ozlabs.org>2023-03-17 20:03:15 +1100
commit1fe5196b10fc30b1dfb8b4b0ac5bf2b6fa49c297 (patch)
treef7a89cf83bc4840bb1049655ed0f28fd6408bb40
parent6292210a9d14c0d947a5c3fb10f0d289815cd24f (diff)
downloadppp-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.c10
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);
}