]> git.kaiwu.me - nginx.git/commitdiff
SSL: fixed unlocked access to sess_id->len.
authorRuslan Ermilov <ru@nginx.com>
Tue, 25 Sep 2018 11:07:59 +0000 (14:07 +0300)
committerRuslan Ermilov <ru@nginx.com>
Tue, 25 Sep 2018 11:07:59 +0000 (14:07 +0300)
src/event/ngx_event_openssl.c

index 3a0e150d2bf916e6c26338ec48641060774a5eb9..75129134837c8e163e9ee5d2eb63595232a018df 100644 (file)
@@ -3146,6 +3146,7 @@ ngx_ssl_get_cached_session(ngx_ssl_conn_t *ssl_conn,
     const
 #endif
     u_char                   *p;
+    size_t                    slen;
     uint32_t                  hash;
     ngx_int_t                 rc;
     ngx_shm_zone_t           *shm_zone;
@@ -3201,12 +3202,14 @@ ngx_ssl_get_cached_session(ngx_ssl_conn_t *ssl_conn,
         if (rc == 0) {
 
             if (sess_id->expire > ngx_time()) {
-                ngx_memcpy(buf, sess_id->session, sess_id->len);
+                slen = sess_id->len;
+
+                ngx_memcpy(buf, sess_id->session, slen);
 
                 ngx_shmtx_unlock(&shpool->mutex);
 
                 p = buf;
-                sess = d2i_SSL_SESSION(NULL, &p, sess_id->len);
+                sess = d2i_SSL_SESSION(NULL, &p, slen);
 
                 return sess;
             }