From 9ec4938d047f631db0a910c17e73d7c5aff8e166 Mon Sep 17 00:00:00 2001 From: kraai Date: Thu, 19 Jul 2001 15:00:14 +0000 Subject: Add a RELEASE_BB_BUFFER macro and use it to fix a memory leak in syslogd.c (noted by Adam Slattery). git-svn-id: svn://busybox.net/trunk/busybox@3125 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- busybox.h | 3 +++ include/busybox.h | 3 +++ sysklogd/syslogd.c | 1 + syslogd.c | 1 + 4 files changed, 8 insertions(+) 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; } -- cgit v1.2.3-55-g6feb