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