]> git.pld-linux.org Git - packages/apache.git/blobdiff - apache-mkstemp.patch
- patches from rawhide.
[packages/apache.git] / apache-mkstemp.patch
diff --git a/apache-mkstemp.patch b/apache-mkstemp.patch
new file mode 100644 (file)
index 0000000..75ce679
--- /dev/null
@@ -0,0 +1,111 @@
+Greg Kroah-Hartman's patch, dated 8 Jan 2001.
+diff -aur apache_1.3.14/src/support/htdigest.c apache_1.3.14-mkstemp/src/support/htdigest.c
+--- apache_1.3.14/src/support/htdigest.c       Tue Jan 25 23:36:53 2000
++++ apache_1.3.14-mkstemp/src/support/htdigest.c       Tue Jan  9 20:42:42 2001
+@@ -93,7 +93,7 @@
+ #define MAX_STRING_LEN 256
+-char *tn;
++char tn[MAX_STRING_LEN];
+ static void getword(char *word, char *line, char stop)
+@@ -156,7 +156,7 @@
+     ap_getpass("Re-type new password: ", pwv, sizeof(pwv));
+     if (strcmp(pwin, pwv) != 0) {
+       fprintf(stderr, "They don't match, sorry.\n");
+-      if (tn) {
++      if (strlen(tn)) {
+           unlink(tn);
+       }
+       exit(1);
+@@ -187,7 +187,7 @@
+ static void interrupted(void)
+ {
+     fprintf(stderr, "Interrupted.\n");
+-    if (tn)
++    if (strlen(tn))
+       unlink(tn);
+     exit(1);
+ }
+@@ -215,8 +215,9 @@
+     char x[MAX_STRING_LEN];
+     char command[MAX_STRING_LEN];
+     int found;
++    int tfd;
+-    tn = NULL;
++    strcpy (tn, "/tmp/htdigest-XXXXXX");
+     signal(SIGINT, (void (*)(int)) interrupted);
+     if (argc == 5) {
+       if (strcmp(argv[1], "-c"))
+@@ -235,8 +236,12 @@
+     else if (argc != 4)
+       usage();
+-    tn = tmpnam(NULL);
+-    if (!(tfp = fopen(tn, "w"))) {
++    tfd = mkstemp (tn);
++    if (tfd == -1) {
++      fprintf(stderr, "Could not open temp file.\n");
++      exit(1);
++    }
++    if (!(tfp = fdopen(tfd, "w"))) {
+       fprintf(stderr, "Could not open temp file.\n");
+       exit(1);
+     }
+diff -aur apache_1.3.14/src/support/htpasswd.c apache_1.3.14-mkstemp/src/support/htpasswd.c
+--- apache_1.3.14/src/support/htpasswd.c       Thu Jun  1 19:42:33 2000
++++ apache_1.3.14-mkstemp/src/support/htpasswd.c       Tue Jan  9 20:41:36 2001
+@@ -125,7 +125,7 @@
+  * This needs to be declared statically so the signal handler can
+  * access it.
+  */
+-static char *tempfilename;
++static char tempfilename[MAX_STRING_LEN];
+ /*
+  * If our platform knows about the tmpnam() external buffer size, create
+  * a buffer to pass in.  This is needed in a threaded environment, or
+@@ -285,7 +285,7 @@
+ static void interrupted(void)
+ {
+     fprintf(stderr, "Interrupted.\n");
+-    if (tempfilename != NULL) {
++    if (strlen(tempfilename) > 0) {
+       unlink(tempfilename);
+     }
+     exit(ERR_INTERRUPTED);
+@@ -377,8 +377,10 @@
+     int noninteractive = 0;
+     int i;
+     int args_left = 2;
++    int tfd;
++
++    memset (tempfilename, 0x00, sizeof(tempfilename));
+-    tempfilename = NULL;
+     signal(SIGINT, (void (*)(int)) interrupted);
+     /*
+@@ -560,8 +562,9 @@
+      * to add or update.  Let's do it..
+      */
+     errno = 0;
+-    tempfilename = tmpnam(tname_buf);
+-    if ((tempfilename == NULL) || (*tempfilename == '\0')) {
++    strcpy(tempfilename, "/tmp/htpasswd-XXXXXX");
++    tfd = mkstemp(tempfilename);
++    if (tfd == -1) {
+       fprintf(stderr, "%s: unable to generate temporary filename\n",
+               argv[0]);
+       if (errno == 0) {
+@@ -570,7 +573,7 @@
+       perror("tmpnam");
+       exit(ERR_FILEPERM);
+     }
+-    ftemp = fopen(tempfilename, "w+");
++    ftemp = fdopen(tfd, "w+");
+     if (ftemp == NULL) {
+       fprintf(stderr, "%s: unable to create temporary file '%s'\n", argv[0],
+               tempfilename);
This page took 0.03447 seconds and 4 git commands to generate.