From 480d7b8f5f0ccb52391c41ffa58c196618827346 Mon Sep 17 00:00:00 2001 From: Ori Bernstein Date: Fri, 6 Dec 2019 12:08:00 -0800 Subject: fix some acme memory leaks (imported from plan9port 7ca1c90109e17dced4b38fbaadea9d2cf39871b7, some tag restoration lines not relevant.) --- sys/src/cmd/acme/acme.c | 7 +++++-- sys/src/cmd/acme/exec.c | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/src/cmd/acme/acme.c b/sys/src/cmd/acme/acme.c index 69ea715ce..d5addedbd 100644 --- a/sys/src/cmd/acme/acme.c +++ b/sys/src/cmd/acme/acme.c @@ -307,15 +307,18 @@ static int errorfd; void acmeerrorproc(void *) { - char *buf; + char *buf, *s; int n; threadsetname("acmeerrorproc"); buf = emalloc(8192+1); while((n=read(errorfd, buf, 8192)) >= 0){ buf[n] = '\0'; - sendp(cerr, estrdup(buf)); + s = estrdup(buf); + sendp(cerr, s); + free(s); } + free(buf); } void diff --git a/sys/src/cmd/acme/exec.c b/sys/src/cmd/acme/exec.c index f504275a5..3dbd001c5 100644 --- a/sys/src/cmd/acme/exec.c +++ b/sys/src/cmd/acme/exec.c @@ -159,6 +159,7 @@ execute(Text *t, uint aq0, uint aq1, int external, Text *argt) aa = getbytearg(argt, TRUE, TRUE, &a); if(a){ if(strlen(a) > EVENTSIZE){ /* too big; too bad */ + free(r); free(aa); free(a); warning(nil, "`argument string too long\n"); -- cgit v1.2.3