]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
mod_session: Always decode session attributes early.
authorHank Ibell <hwibell@apache.org>
Tue, 15 Jan 2019 19:54:41 +0000 (19:54 +0000)
committerHank Ibell <hwibell@apache.org>
Tue, 15 Jan 2019 19:54:41 +0000 (19:54 +0000)
Backport r1850947 from trunk
Submitted by: hwibell
Reviewed by: hwibell, covener, wrowe

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1851409 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
modules/session/mod_session.c

diff --git a/CHANGES b/CHANGES
index c4d9f6c2ea80991be770b2c20c7312be4b5ae1ad..4b0a07fdcf5b93df894edc2715c84f69e12d2f38 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,6 +9,8 @@ Changes with Apache 2.4.38
      and we should just set the value for the environment variable 
      like in the pattern case. [Ruediger Pluem]
 
+  *) mod_session: Always decode session attributes early. [Hank Ibell]
+
   *) core: Incorrect values for environment variables are substituted when
      multiple environment variables are specified in a directive. [Hank Ibell]
 
diff --git a/STATUS b/STATUS
index 00070f9f247f189b7ca77f61554ce494c0471b06..45a92ba4d815fca99d7b6ef5fd23859355ecba0d 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -125,11 +125,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-  *) mod_session: Always decode session attributes early.
-     trunk patch: http://svn.apache.org/r1850947
-     2.4.x patch: svn merge -c 1850947 ^/httpd/httpd/trunk .
-     +1: hwibell, covener, wrowe
-
   *) mod_ssl (ssl_engine_io.c: bio_filter_out_write, bio_filter_in_read)
      Clear retry flags before aborting on client-initiated reneg. [Joe Orton]
      PR: 63052
index d517020d9954a4ca8a28740d71894a41ed0681fc..64e6e4a8132ae7a6bb21f9522eb782946373aea0 100644 (file)
@@ -126,20 +126,23 @@ static apr_status_t ap_session_load(request_rec * r, session_rec ** z)
 
     /* found a session that hasn't expired? */
     now = apr_time_now();
+
     if (zz) {
-        if (zz->expiry && zz->expiry < now) {
+        /* load the session attibutes */
+        rv = ap_run_session_decode(r, zz);
+        /* having a session we cannot decode is just as good as having
+           none at all */
+       if (OK != rv) {
+            ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01817)
+                    "error while decoding the session, "
+                    "session not loaded: %s", r->uri);
             zz = NULL;
         }
-        else {
-            /* having a session we cannot decode is just as good as having
-               none at all */
-            rv = ap_run_session_decode(r, zz);
-            if (OK != rv) {
-                ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01817)
-                              "error while decoding the session, "
-                              "session not loaded: %s", r->uri);
-                zz = NULL;
-            }
+
+       /* invalidate session if session is expired */
+        if (zz && zz->expiry && zz->expiry < now) {
+            zz = NULL;
         }
     }