]> granicus.if.org Git - apache/commitdiff
Merge r1309602 from trunk:
authorJim Jagielski <jim@apache.org>
Fri, 13 Jul 2012 16:08:17 +0000 (16:08 +0000)
committerJim Jagielski <jim@apache.org>
Fri, 13 Jul 2012 16:08:17 +0000 (16:08 +0000)
mod_rewrite: Fix RewriteCond integer checks to be parsed correctly.

PR: 53023
Submitted by: Axel Reinhold <apache freakout.de>
Reviewed/Updated by: nd

Submitted by: nd
Reviewed/backported by: jim

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

CHANGES
STATUS
modules/mappers/mod_rewrite.c

diff --git a/CHANGES b/CHANGES
index 7ac818f790462577002423ef506c644772fe1d9c..51770d244f73fc74718fc338834708b58088ae32 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -59,6 +59,9 @@ Changes with Apache 2.4.2
   *) mod_ssl: Fix crash with threaded MPMs due to race condition when
      initializing EC temporary keys. [Stefan Fritsch]
 
+  *) mod_rewrite: Fix RewriteCond integer checks to be parsed correctly.
+     PR 53023. [Axel Reinhold <apache freakout.de>, AndrĂ© Malo]
+
   *) mod_proxy: Add the forcerecovery balancer parameter that determines if
      recovery for balancer workers is enforced. [Ruediger Pluem]
 
diff --git a/STATUS b/STATUS
index dcd2bccc7064c9cc5c9c4cc7274bce599a234e28..87abe7ba9f43b561176e2832ff5dd3eff297649f 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -88,11 +88,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-  * mod_rewrite: Fix RewriteCond integer checks to be parsed correctly.
-    (PR 53023)
-    Patch: http://svn.apache.org/viewvc?view=revision&revision=1309602
-    (applies cleanly to 2.4.x)
-    +1: nd, sf, jim
 
 
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
index 10aec8f3afdc219263b2083e8badd58f402b4a15..1bd6b31bfb605c304cb51c23cedf2caa79924d2e 100644 (file)
@@ -3247,37 +3247,59 @@ static const char *cmd_rewritecond(cmd_parms *cmd, void *in_dconf,
         newcond->ptype = CONDPAT_AP_EXPR;
     }
     else if (*a2 && a2[1]) {
-        if (!a2[2] && *a2 == '-') {
-            switch (a2[1]) {
-            case 'f': newcond->ptype = CONDPAT_FILE_EXISTS; break;
-            case 's': newcond->ptype = CONDPAT_FILE_SIZE;   break;
-            case 'd': newcond->ptype = CONDPAT_FILE_DIR;    break;
-            case 'x': newcond->ptype = CONDPAT_FILE_XBIT;   break;
-            case 'h': newcond->ptype = CONDPAT_FILE_LINK;   break;
-            case 'L': newcond->ptype = CONDPAT_FILE_LINK;   break;
-            case 'U': newcond->ptype = CONDPAT_LU_URL;      break;
-            case 'F': newcond->ptype = CONDPAT_LU_FILE;     break;
-            case 'l': if (a2[2] == 't')
-                          a2 += 3, newcond->ptype = CONDPAT_INT_LT;
-                      else if (a2[2] == 'e')
-                          a2 += 3, newcond->ptype = CONDPAT_INT_LE;
-                      else /* Historical; prefer -L or -h instead */
-                          newcond->ptype = CONDPAT_FILE_LINK;
-                      break;
-            case 'g': if (a2[2] == 't')
-                          a2 += 3, newcond->ptype = CONDPAT_INT_GT;
-                      else if (a2[2] == 'e')
-                          a2 += 3, newcond->ptype = CONDPAT_INT_GE;
-                      break;
-            case 'e': if (a2[2] == 'q')
-                          a2 += 3, newcond->ptype = CONDPAT_INT_EQ;
-                      break;
-            case 'n': if (a2[2] == 'e') {
-                          /* Inversion, ensure !-ne == -eq */
-                          a2 += 3, newcond->ptype = CONDPAT_INT_EQ;
-                          newcond->flags ^= CONDFLAG_NOTMATCH;
-                      }
-                      break;
+        if (*a2 == '-') {
+            if (!a2[2]) {
+                switch (a2[1]) {
+                case 'f': newcond->ptype = CONDPAT_FILE_EXISTS; break;
+                case 's': newcond->ptype = CONDPAT_FILE_SIZE;   break;
+                case 'd': newcond->ptype = CONDPAT_FILE_DIR;    break;
+                case 'x': newcond->ptype = CONDPAT_FILE_XBIT;   break;
+                case 'h': newcond->ptype = CONDPAT_FILE_LINK;   break;
+                case 'L': newcond->ptype = CONDPAT_FILE_LINK;   break;
+                case 'l': newcond->ptype = CONDPAT_FILE_LINK;   break;
+                case 'U': newcond->ptype = CONDPAT_LU_URL;      break;
+                case 'F': newcond->ptype = CONDPAT_LU_FILE;     break;
+                }
+            }
+            else if (a2[3]) {
+                switch (a2[1]) {
+                case 'l':
+                    if (a2[2] == 't') {
+                        a2 += 3;
+                        newcond->ptype = CONDPAT_INT_LT;
+                    }
+                    else if (a2[2] == 'e') {
+                        a2 += 3;
+                        newcond->ptype = CONDPAT_INT_LE;
+                    }
+                    break;
+
+                case 'g':
+                    if (a2[2] == 't') {
+                        a2 += 3; newcond->ptype = CONDPAT_INT_GT;
+                    }
+                    else if (a2[2] == 'e') {
+                        a2 += 3;
+                        newcond->ptype = CONDPAT_INT_GE;
+                    }
+                    break;
+
+                case 'e':
+                    if (a2[2] == 'q') {
+                        a2 += 3;
+                        newcond->ptype = CONDPAT_INT_EQ;
+                    }
+                    break;
+
+                case 'n':
+                    if (a2[2] == 'e') {
+                        /* Inversion, ensure !-ne == -eq */
+                        a2 += 3;
+                        newcond->ptype = CONDPAT_INT_EQ;
+                        newcond->flags ^= CONDFLAG_NOTMATCH;
+                    }
+                    break;
+                }
             }
         }
         else {