You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by co...@hyperreal.org on 1998/12/17 15:58:58 UTC

cvs commit: apache-1.3/src/support suexec.c

coar        98/12/17 06:58:57

  Modified:    src      CHANGES
               src/support suexec.c
  Log:
  	fclose(NULL) isn't always a good idea.
  
  Submitted by:	Rick Franchuk <ri...@transpect.net>
  Reviewed by:	Ken Coar
  
  Revision  Changes    Path
  1.1172    +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1171
  retrieving revision 1.1172
  diff -u -r1.1171 -r1.1172
  --- CHANGES	1998/12/16 15:57:26	1.1171
  +++ CHANGES	1998/12/17 14:58:55	1.1172
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.4
   
  +  *) Fixed problem of fclose() on an unopened file in suexec if LOG_EXEC
  +     wasn't defined.  [Rick Franchuk <ri...@transpect.net>]
  +
     *) Removed recently introduced bugs and disfigurements in APACI:
        o fixed argument line processing: using $args was broken: It was not
          initialized and using args="$args $apc_option" and even args="$args
  
  
  
  1.47      +11 -5     apache-1.3/src/support/suexec.c
  
  Index: suexec.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/support/suexec.c,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- suexec.c	1998/09/16 20:51:08	1.46
  +++ suexec.c	1998/12/17 14:58:57	1.47
  @@ -109,7 +109,7 @@
   #define AP_ENVBUF 256
   
   extern char **environ;
  -static FILE *log;
  +static FILE *log = NULL;
   
   char *safe_env_lst[] =
   {
  @@ -500,10 +500,16 @@
       /* 
        * Be sure to close the log file so the CGI can't
        * mess with it.  If the exec fails, it will be reopened 
  -     * automatically when log_err is called.
  -     */
  -    fclose(log);
  -    log = NULL;
  +     * automatically when log_err is called.  Note that the log
  +     * might not actually be open if LOG_EXEC isn't defined.
  +     * However, the "log" cell isn't ifdef'd so let's be defensive
  +     * and assume someone might have done something with it
  +     * outside an ifdef'd LOG_EXEC block.
  +     */
  +    if (log != NULL) {
  +	fclose(log);
  +	log = NULL;
  +    }
   
       /*
        * Execute the command, replacing our image with its own.