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; }