crond: do not assume setenv() does not leak
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
ef0366eb4f
commit
bbf17bbf32
@ -79,9 +79,9 @@
|
||||
#include "common_bufsiz.h"
|
||||
#include <syslog.h>
|
||||
|
||||
/* glibc frees previous setenv'ed value when we do next setenv()
|
||||
* of the same variable. uclibc does not do this! */
|
||||
#if (defined(__GLIBC__) && !defined(__UCLIBC__)) /* || OTHER_SAFE_LIBC... */
|
||||
#if 0
|
||||
/* If libc tracks and reuses setenv()-allocated memory, ok to set this to 0 */
|
||||
/* Neither glibc nor uclibc do that! */
|
||||
# define SETENV_LEAKS 0
|
||||
#else
|
||||
# define SETENV_LEAKS 1
|
||||
|
18
scripts/test_setenv_leak.c
Normal file
18
scripts/test_setenv_leak.c
Normal file
@ -0,0 +1,18 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char buf[256];
|
||||
|
||||
int i = argv[1] ? atoi(argv[1]) : 999999;
|
||||
while (--i > 0) {
|
||||
sprintf(buf, "%d", i);
|
||||
setenv("VAR", buf, 1);
|
||||
}
|
||||
printf("Check size of [heap] mapping:\n");
|
||||
freopen("/proc/self/maps", "r", stdin);
|
||||
while (fgets(buf, sizeof(buf), stdin))
|
||||
fputs(buf, stdout);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user