You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by do...@apache.org on 2002/03/13 07:41:46 UTC

cvs commit: httpd-2.0/modules/ssl ssl_engine_kernel.c ssl_util_ssl.c ssl_util_ssl.h

dougm       02/03/12 22:41:46

  Modified:    modules/ssl ssl_engine_kernel.c ssl_util_ssl.c
                        ssl_util_ssl.h
  Log:
  SSL_SESSION_id2sz() was NOT THREAD SAFE.  it returned a pointer to a
  static variable.  fixed.
  
  Revision  Changes    Path
  1.50      +11 -3     httpd-2.0/modules/ssl/ssl_engine_kernel.c
  
  Index: ssl_engine_kernel.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/ssl/ssl_engine_kernel.c,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- ssl_engine_kernel.c	13 Mar 2002 06:12:24 -0000	1.49
  +++ ssl_engine_kernel.c	13 Mar 2002 06:41:46 -0000	1.50
  @@ -1606,11 +1606,14 @@
        * Log this cache operation
        */
       if (sc->nLogLevel >= SSL_LOG_TRACE) {
  +        char buf[SSL_SESSION_ID_STRING_LEN];
  +
           ssl_log(s, SSL_LOG_TRACE,
                   "Inter-Process Session Cache: "
                   "request=SET status=%s id=%s timeout=%ds (session caching)",
                   (rc == TRUE ? "OK" : "BAD"),
  -                SSL_SESSION_id2sz(session_id, session_id_length),
  +                SSL_SESSION_id2sz(session_id, session_id_length,
  +                                  buf, sizeof(buf)),
                   (timeout - time(NULL)));
       }
   
  @@ -1647,12 +1650,15 @@
        * Log this cache operation
        */
       if (sc->nLogLevel >= SSL_LOG_TRACE) {
  +        char buf[SSL_SESSION_ID_STRING_LEN];
           const char *status = session ? "FOUND" : "MISSED";
           const char *re     = session ? "reuse" : "renewal";
   
           ssl_log(s, SSL_LOG_TRACE, "Inter-Process Session Cache: "
                   "request=GET status=%s id=%s (session %s)",
  -                status, SSL_SESSION_id2sz(id, idlen), re);
  +                status,
  +                SSL_SESSION_id2sz(id, idlen, buf, sizeof(buf)),
  +                re);
       }
   
       /*
  @@ -1701,9 +1707,11 @@
        * Log this cache operation
        */
       if (sc->nLogLevel >= SSL_LOG_TRACE) {
  +        char buf[SSL_SESSION_ID_STRING_LEN];
           ssl_log(s, SSL_LOG_TRACE, "Inter-Process Session Cache: "
                   "request=REM status=OK id=%s (session dead)",
  -                SSL_SESSION_id2sz(session_id, session_id_length));
  +                SSL_SESSION_id2sz(session_id, session_id_length,
  +                                  buf, sizeof(buf)));
       }
   
       return;
  
  
  
  1.11      +3 -3      httpd-2.0/modules/ssl/ssl_util_ssl.c
  
  Index: ssl_util_ssl.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/ssl/ssl_util_ssl.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ssl_util_ssl.c	10 Jan 2002 04:55:19 -0000	1.10
  +++ ssl_util_ssl.c	13 Mar 2002 06:41:46 -0000	1.11
  @@ -535,15 +535,15 @@
   **  _________________________________________________________________
   */
   
  -char *SSL_SESSION_id2sz(unsigned char *id, int idlen)
  +char *SSL_SESSION_id2sz(unsigned char *id, int idlen,
  +                        char *str, int strsize)
   {
  -    static char str[(SSL_MAX_SSL_SESSION_ID_LENGTH+1)*2];
       char *cp;
       int n;
   
       cp = str;
       for (n = 0; n < idlen && n < SSL_MAX_SSL_SESSION_ID_LENGTH; n++) {
  -        apr_snprintf(cp, sizeof(str)-(cp-str), "%02X", id[n]);
  +        apr_snprintf(cp, strsize - (cp-str), "%02X", id[n]);
           cp += 2;
       }
       *cp = NUL;
  
  
  
  1.13      +5 -1      httpd-2.0/modules/ssl/ssl_util_ssl.h
  
  Index: ssl_util_ssl.h
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/ssl/ssl_util_ssl.h,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ssl_util_ssl.h	18 Jan 2002 23:26:46 -0000	1.12
  +++ ssl_util_ssl.h	13 Mar 2002 06:41:46 -0000	1.13
  @@ -80,6 +80,10 @@
    */
   #define SSL_SESSION_MAX_DER 1024*10
   
  +/* max length for SSL_SESSION_id2sz */
  +#define SSL_SESSION_ID_STRING_LEN \
  +    ((SSL_MAX_SSL_SESSION_ID_LENGTH + 1) * 2)
  +
   /*  
    *  Additional Functions
    */
  @@ -100,6 +104,6 @@
   BOOL        SSL_load_CrtAndKeyInfo_path(apr_pool_t *, STACK_OF(X509_INFO) *, char *);
   #endif /* SSL_EXPERIMENTAL_PROXY */
   int         SSL_CTX_use_certificate_chain(SSL_CTX *, char *, int, int (*)(char*,int,int,void*));
  -char       *SSL_SESSION_id2sz(unsigned char *, int);
  +char       *SSL_SESSION_id2sz(unsigned char *, int, char *, int);
   
   #endif /* __SSL_UTIL_SSL_H__ */