diff options
Diffstat (limited to 'package/logrotate/patches/logrotate-3.7.1-no-tmpdir.patch')
-rw-r--r-- | package/logrotate/patches/logrotate-3.7.1-no-tmpdir.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/package/logrotate/patches/logrotate-3.7.1-no-tmpdir.patch b/package/logrotate/patches/logrotate-3.7.1-no-tmpdir.patch new file mode 100644 index 000000000..fb95f1ee3 --- /dev/null +++ b/package/logrotate/patches/logrotate-3.7.1-no-tmpdir.patch @@ -0,0 +1,54 @@ +diff -u -ruN logrotate-3.7.1-cur/logrotate.c logrotate-3.7.1/logrotate.c +--- logrotate-3.7.1-cur/logrotate.c 2005-05-25 18:20:41.000000000 -0400 ++++ logrotate-3.7.1/logrotate.c 2005-05-25 18:21:10.000000000 -0400 +@@ -90,10 +90,7 @@ + } + + static int runScript(char * logfn, char * script) { +- int fd; +- char *filespec; + int rc; +- char buf[256]; + + if (debug) { + message(MESS_DEBUG, "running script with arg %s: \"%s\"\n", +@@ -101,38 +98,12 @@ + return 0; + } + +- filespec = buf; +- snprintf(buf, sizeof(buf), "%s/logrotate.XXXXXX", getenv("TMPDIR") ?: "/tmp"); +- fd = -1; +- if (!filespec || (fd = mkstemp(filespec)) < 0 || fchmod(fd, 0700)) { +- message(MESS_DEBUG, "error creating %s: %s\n", filespec, +- strerror(errno)); +- if (fd >= 0) { +- close(fd); +- unlink(filespec); +- } +- return -1; +- } +- +- if (write(fd, "#!/bin/sh\n\n", 11) != 11 || +- write(fd, script, strlen(script)) != strlen(script)) { +- message(MESS_DEBUG, "error writing %s\n", filespec); +- close(fd); +- unlink(filespec); +- return -1; +- } +- +- close(fd); +- + if (!fork()) { +- execlp(filespec, filespec, logfn, NULL); ++ execl("/bin/sh", "sh", "-c", script, NULL); + exit(1); + } + + wait(&rc); +- +- unlink(filespec); +- + return rc; + } + |