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__ */