]> git.kaiwu.me - nginx.git/commitdiff
SSL: fixed $ssl_session_id possible segfault after 97e3769637a7.
authorMaxim Dounin <mdounin@mdounin.ru>
Thu, 23 Jan 2014 14:32:26 +0000 (18:32 +0400)
committerMaxim Dounin <mdounin@mdounin.ru>
Thu, 23 Jan 2014 14:32:26 +0000 (18:32 +0400)
Even during execution of a request it is possible that there will be
no session available, notably in case of renegotiation.  As a result
logging of $ssl_session_id in some cases caused NULL pointer dereference
after revision 97e3769637a7 (1.5.9).  The check added returns an empty
string if there is no session available.

src/event/ngx_event_openssl.c

index 9b1804e4791831fdef4ce04ab656c877849f37eb..915e604bbbccfc39aa4bda66a410539e74311118 100644 (file)
@@ -2233,6 +2233,10 @@ ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
     SSL_SESSION  *sess;
 
     sess = SSL_get0_session(c->ssl->connection);
+    if (sess == NULL) {
+        s->len = 0;
+        return NGX_OK;
+    }
 
     buf = sess->session_id;
     len = sess->session_id_length;