]> granicus.if.org Git - apache/blobdiff - modules/aaa/mod_access_compat.c
Allow for negation of env check as well...
[apache] / modules / aaa / mod_access_compat.c
index bd56c8ed2c195fd9989c7db5357fcf7c3e42c2f7..df21fefb8081ddb2af73404e9c8572f814ee1d56 100644 (file)
@@ -45,6 +45,7 @@
 
 enum allowdeny_type {
     T_ENV,
+    T_NENV,
     T_ALL,
     T_IP,
     T_HOST,
@@ -156,7 +157,12 @@ static const char *allow_cmd(cmd_parms *cmd, void *dv, const char *from,
     a->x.from = where;
     a->limited = cmd->limited;
 
-    if (!strncasecmp(where, "env=", 4)) {
+    if (!strncasecmp(where, "env=!", 5)) {
+        a->type = T_NENV;
+        a->x.from += 5;
+
+    }
+    else if (!strncasecmp(where, "env=", 4)) {
         a->type = T_ENV;
         a->x.from += 4;
 
@@ -255,6 +261,12 @@ static int find_allowdeny(request_rec *r, apr_array_header_t *a, int method)
             }
             break;
 
+        case T_NENV:
+            if (!apr_table_get(r->subprocess_env, ap[i].x.from)) {
+                return 1;
+            }
+            break;
+
         case T_ALL:
             return 1;