httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r..@locus.apache.org
Subject cvs commit: apache-2.0/src/main http_log.c
Date Thu, 20 Apr 2000 16:25:41 GMT
rbb         00/04/20 09:25:41

  Modified:    src/include http_log.h
               src/main http_log.c
  Log:
  Add support for pool to log_error_core.  Also add ap_log_perror to allow
  logging without either a request or server _rec.
  
  Revision  Changes    Path
  1.16      +10 -6     apache-2.0/src/include/http_log.h
  
  Index: http_log.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/include/http_log.h,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- http_log.h	2000/04/14 15:58:17	1.15
  +++ http_log.h	2000/04/20 16:25:40	1.16
  @@ -111,16 +111,20 @@
   
   void ap_open_logs (server_rec *, ap_pool_t *p);
   
  -/* The two primary logging functions, ap_log_error and ap_log_rerror,
  - * use a printf style format string to build the log message.  It is
  - * VERY IMPORTANT that you not include any raw data from the network,
  - * such as the request-URI or request header fields, within the format
  - * string.  Doing so makes the server vulnerable to a denial-of-service
  - * attack and other messy behavior.  Instead, use a simple format string
  +/* The three primary logging functions, ap_log_error, ap_log_rerror, and 
  + * ap_log_perror use a printf style format string to build the log message.  
  + * It is VERY IMPORTANT that you not include any raw data from the network, 
  + * such as the request-URI or request header fields, within the format 
  + * string.  Doing so makes the server vulnerable to a denial-of-service 
  + * attack and other messy behavior.  Instead, use a simple format string 
    * like "%s", followed by the string containing the untrusted data.
    */
   API_EXPORT(void) ap_log_error(const char *file, int line, int level, 
                                ap_status_t status, const server_rec *s, 
  +                             const char *fmt, ...)
  +			    __attribute__((format(printf,6,7)));
  +API_EXPORT(void) ap_log_perror(const char *file, int line, int level, 
  +                             ap_status_t status, ap_pool_t *p, 
                                const char *fmt, ...)
   			    __attribute__((format(printf,6,7)));
   API_EXPORT(void) ap_log_rerror(const char *file, int line, int level, 
  
  
  
  1.41      +27 -6     apache-2.0/src/main/http_log.c
  
  Index: http_log.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/main/http_log.c,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- http_log.c	2000/04/17 19:57:30	1.40
  +++ http_log.c	2000/04/20 16:25:40	1.41
  @@ -312,7 +312,8 @@
   
   static void log_error_core(const char *file, int line, int level, 
                              ap_status_t status, const server_rec *s, 
  -                           const request_rec *r, const char *fmt, va_list args)
  +                           const request_rec *r, ap_pool_t *pool,
  +                           const char *fmt, va_list args)
   {
       char errstr[MAX_STRING_LEN + 1];    /* + 1 to have room for '\n' */
       size_t len;
  @@ -408,11 +409,20 @@
   	len += ap_snprintf(errstr + len, MAX_STRING_LEN - len,
   		"[client %s] ", r->connection->remote_ip);
       }
  -    /* XXX - need an APRized strerror() */
       if (!(level & APLOG_NOERRNO)
   	&& (status != 0)) {
  +        ap_pool_t *p;
  +        if (r) {
  +            p = r->pool;
  +        }
  +        else if (s) {
  +            p = s->process->pool;
  +        }
  +        else {
  +            p = pool;
  +        }
   	len += ap_snprintf(errstr + len, MAX_STRING_LEN - len,
  -		"(%d)%s: ", status, strerror(status));
  +		"(%d)%s: ", status, ap_strerror(status, p));
       }
   
       len += ap_vsnprintf(errstr + len, MAX_STRING_LEN - len, fmt, args);
  @@ -441,10 +451,21 @@
       va_list args;
   
       va_start(args, fmt);
  -    log_error_core(file, line, level, status, s, NULL, fmt, args);
  +    log_error_core(file, line, level, status, s, NULL, NULL, fmt, args);
       va_end(args);
   }
   
  +API_EXPORT(void) ap_log_perror(const char *file, int line, int level,
  +			      ap_status_t status, ap_pool_t *p, 
  +                              const char *fmt, ...)
  +{
  +    va_list args;
  +
  +    va_start(args, fmt);
  +    log_error_core(file, line, level, status, NULL, NULL, p, fmt, args);
  +    va_end(args);
  +}
  +
   API_EXPORT(void) ap_log_rerror(const char *file, int line, int level,
   			       ap_status_t status, const request_rec *r, 
                                  const char *fmt, ...)
  @@ -452,7 +473,7 @@
       va_list args;
   
       va_start(args, fmt);
  -    log_error_core(file, line, level, status, r->server, r, fmt, args);
  +    log_error_core(file, line, level, status, r->server, r, NULL, fmt, args);
       /*
        * IF the error level is 'warning' or more severe,
        * AND there isn't already error text associated with this request,
  @@ -537,7 +558,7 @@
       va_list args;
       
       va_start(args, fmt);
  -    log_error_core(APLOG_MARK, APLOG_ERR, errno, s, NULL, fmt, args);
  +    log_error_core(APLOG_MARK, APLOG_ERR, errno, s, NULL, NULL, fmt, args);
       va_end(args);
   }
   
  
  
  

Mime
View raw message