crond: do not assume setenv() does not leak
No binary (build failed)
—
(log yok)
| @@ -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 | |
| @@ -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; |
| + | } |