From: Matt Kraai Date: Thu, 19 Jul 2001 15:00:14 +0000 (-0000) Subject: Add a RELEASE_BB_BUFFER macro and use it to fix a memory leak in syslogd.c X-Git-Tag: 0_60_0~54 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c1cda4a6091902bdb81cb8938838f4b26ddc52cf;p=oweals%2Fbusybox.git Add a RELEASE_BB_BUFFER macro and use it to fix a memory leak in syslogd.c (noted by Adam Slattery). --- diff --git a/busybox.h b/busybox.h index e8055b06c..f79dac8c8 100644 --- a/busybox.h +++ b/busybox.h @@ -69,13 +69,16 @@ extern const struct BB_applet applets[]; #ifdef BB_FEATURE_BUFFERS_GO_ON_STACK #define RESERVE_BB_BUFFER(buffer,len) char buffer[len] #define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len] +#define RELEASE_BB_BUFFER(buffer) ((void)0) #else #ifdef BB_FEATURE_BUFFERS_GO_IN_BSS #define RESERVE_BB_BUFFER(buffer,len) static char buffer[len] #define RESERVE_BB_UBUFFER(buffer,len) static unsigned char buffer[len] +#define RELEASE_BB_BUFFER(buffer) ((void)0) #else #define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len) #define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len) +#define RELEASE_BB_BUFFER(buffer) free (buffer) #endif #endif diff --git a/include/busybox.h b/include/busybox.h index e8055b06c..f79dac8c8 100644 --- a/include/busybox.h +++ b/include/busybox.h @@ -69,13 +69,16 @@ extern const struct BB_applet applets[]; #ifdef BB_FEATURE_BUFFERS_GO_ON_STACK #define RESERVE_BB_BUFFER(buffer,len) char buffer[len] #define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len] +#define RELEASE_BB_BUFFER(buffer) ((void)0) #else #ifdef BB_FEATURE_BUFFERS_GO_IN_BSS #define RESERVE_BB_BUFFER(buffer,len) static char buffer[len] #define RESERVE_BB_UBUFFER(buffer,len) static unsigned char buffer[len] +#define RELEASE_BB_BUFFER(buffer) ((void)0) #else #define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len) #define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len) +#define RELEASE_BB_BUFFER(buffer) free (buffer) #endif #endif diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index 8ae70a1ed..14219eb54 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -431,6 +431,7 @@ static int serveConnection (int conn) /* Now log it */ logMessage (pri, line); } + RELEASE_BB_BUFFER (tmpbuf); return n_read; } diff --git a/syslogd.c b/syslogd.c index 8ae70a1ed..14219eb54 100644 --- a/syslogd.c +++ b/syslogd.c @@ -431,6 +431,7 @@ static int serveConnection (int conn) /* Now log it */ logMessage (pri, line); } + RELEASE_BB_BUFFER (tmpbuf); return n_read; }