Do not use tmpfile to run script anymore (Closes: #149270) From RedHat patches. --- logrotate.c | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) Index: logrotate-3.7.1/logrotate.c =================================================================== --- logrotate-3.7.1.orig/logrotate.c +++ logrotate-3.7.1/logrotate.c @@ -88,10 +88,7 @@ static logState * findState(const char * } 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", @@ -99,38 +96,12 @@ static int runScript(char * logfn, char 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; }