aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2001-07-19 15:00:14 +0000
committerMatt Kraai <kraai@debian.org>2001-07-19 15:00:14 +0000
commitc1cda4a6091902bdb81cb8938838f4b26ddc52cf (patch)
treed372e32f465bdddb1a900a13303ed9ead4d0320f
parent81108e7653583508bfc541748845183c56e0e378 (diff)
downloadbusybox-w32-c1cda4a6091902bdb81cb8938838f4b26ddc52cf.tar.gz
busybox-w32-c1cda4a6091902bdb81cb8938838f4b26ddc52cf.tar.bz2
busybox-w32-c1cda4a6091902bdb81cb8938838f4b26ddc52cf.zip
Add a RELEASE_BB_BUFFER macro and use it to fix a memory leak in syslogd.c
(noted by Adam Slattery).
-rw-r--r--busybox.h3
-rw-r--r--include/busybox.h3
-rw-r--r--sysklogd/syslogd.c1
-rw-r--r--syslogd.c1
4 files changed, 8 insertions, 0 deletions
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[];
69#ifdef BB_FEATURE_BUFFERS_GO_ON_STACK 69#ifdef BB_FEATURE_BUFFERS_GO_ON_STACK
70#define RESERVE_BB_BUFFER(buffer,len) char buffer[len] 70#define RESERVE_BB_BUFFER(buffer,len) char buffer[len]
71#define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len] 71#define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len]
72#define RELEASE_BB_BUFFER(buffer) ((void)0)
72#else 73#else
73#ifdef BB_FEATURE_BUFFERS_GO_IN_BSS 74#ifdef BB_FEATURE_BUFFERS_GO_IN_BSS
74#define RESERVE_BB_BUFFER(buffer,len) static char buffer[len] 75#define RESERVE_BB_BUFFER(buffer,len) static char buffer[len]
75#define RESERVE_BB_UBUFFER(buffer,len) static unsigned char buffer[len] 76#define RESERVE_BB_UBUFFER(buffer,len) static unsigned char buffer[len]
77#define RELEASE_BB_BUFFER(buffer) ((void)0)
76#else 78#else
77#define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len) 79#define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len)
78#define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len) 80#define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len)
81#define RELEASE_BB_BUFFER(buffer) free (buffer)
79#endif 82#endif
80#endif 83#endif
81 84
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[];
69#ifdef BB_FEATURE_BUFFERS_GO_ON_STACK 69#ifdef BB_FEATURE_BUFFERS_GO_ON_STACK
70#define RESERVE_BB_BUFFER(buffer,len) char buffer[len] 70#define RESERVE_BB_BUFFER(buffer,len) char buffer[len]
71#define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len] 71#define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len]
72#define RELEASE_BB_BUFFER(buffer) ((void)0)
72#else 73#else
73#ifdef BB_FEATURE_BUFFERS_GO_IN_BSS 74#ifdef BB_FEATURE_BUFFERS_GO_IN_BSS
74#define RESERVE_BB_BUFFER(buffer,len) static char buffer[len] 75#define RESERVE_BB_BUFFER(buffer,len) static char buffer[len]
75#define RESERVE_BB_UBUFFER(buffer,len) static unsigned char buffer[len] 76#define RESERVE_BB_UBUFFER(buffer,len) static unsigned char buffer[len]
77#define RELEASE_BB_BUFFER(buffer) ((void)0)
76#else 78#else
77#define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len) 79#define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len)
78#define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len) 80#define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len)
81#define RELEASE_BB_BUFFER(buffer) free (buffer)
79#endif 82#endif
80#endif 83#endif
81 84
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)
431 /* Now log it */ 431 /* Now log it */
432 logMessage (pri, line); 432 logMessage (pri, line);
433 } 433 }
434 RELEASE_BB_BUFFER (tmpbuf);
434 return n_read; 435 return n_read;
435} 436}
436 437
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)
431 /* Now log it */ 431 /* Now log it */
432 logMessage (pri, line); 432 logMessage (pri, line);
433 } 433 }
434 RELEASE_BB_BUFFER (tmpbuf);
434 return n_read; 435 return n_read;
435} 436}
436 437