]> granicus.if.org Git - curl/commitdiff
better treatment of the config->errors, only fclose() this if it was
authorDaniel Stenberg <daniel@haxx.se>
Fri, 8 Mar 2002 15:18:03 +0000 (15:18 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 8 Mar 2002 15:18:03 +0000 (15:18 +0000)
truly fopen()ed. It could end up fclose()ing a NULL as discovered by
Clifford Wolf.

src/main.c

index 4d30a2c8045a825baffce16bb3de71e3b86c5303..885a515eeda583eda2e1c69e544f7e79361bc4b2 100644 (file)
@@ -455,6 +455,7 @@ struct Configurable {
   char *writeout; /* %-styled format string to output */
 
   FILE *errors; /* if stderr redirect is requested */
+  bool errors_fopened;
 
   struct curl_slist *quote;
   struct curl_slist *postquote;
@@ -1031,8 +1032,10 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       config->crlf = TRUE;
       break;
     case '8': /* there is no short letter for this */
-      if(strcmp(nextarg, "-"))
+      if(strcmp(nextarg, "-")) {
         config->errors = fopen(nextarg, "wt");
+        config->errors_fopened = TRUE;
+      }
       else
         config->errors = stdout;
       break;
@@ -2487,9 +2490,7 @@ operate(struct Configurable *config, int argc, char *argv[])
   /* cleanup the curl handle! */
   curl_easy_cleanup(curl);
 
-  if((config->errors != stderr) &&
-     (config->errors != stdout))
-    /* it wasn't directed to stdout or stderr so close the file! */
+  if(config->errors_fopened)
     fclose(config->errors);
 
   main_free(); /* cleanup */