]> granicus.if.org Git - apache/commitdiff
PR39923: Allow AddDescription to work with absolute filesystem paths,
authorEric Covener <covener@apache.org>
Mon, 21 Nov 2011 01:03:15 +0000 (01:03 +0000)
committerEric Covener <covener@apache.org>
Mon, 21 Nov 2011 01:03:15 +0000 (01:03 +0000)
by not adding "*/" to their prefix (intended for relative paths)

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1204307 13f79535-47bb-0310-9956-ffa450edef68

modules/generators/mod_autoindex.c

index b6888673634379722d566c17150cab88a70f39c6..1007b8e7db612fad6ddc6ef1512b4d6c15c2d8d0 100644 (file)
@@ -300,6 +300,7 @@ static const char *add_desc(cmd_parms *cmd, void *d, const char *desc,
     autoindex_config_rec *dcfg = (autoindex_config_rec *) d;
     ai_desc_t *desc_entry;
     char *prefix = "";
+    int is_abspath = ap_os_is_path_absolute(cmd->temp_pool, to);
 
     desc_entry = (ai_desc_t *) apr_array_push(dcfg->desc_list);
     desc_entry->full_path = (ap_strchr_c(to, '/') == NULL) ? 0 : 1;
@@ -307,7 +308,12 @@ static const char *add_desc(cmd_parms *cmd, void *d, const char *desc,
                              || desc_entry->full_path
                              || apr_fnmatch_test(to));
     if (desc_entry->wildcards) {
-        prefix = desc_entry->full_path ? "*/" : "*";
+        if (desc_entry->full_path && !is_abspath) { 
+            prefix = "*/";
+        }
+        else if (WILDCARDS_REQUIRED) { 
+            prefix = "*";
+        }
         desc_entry->pattern = apr_pstrcat(dcfg->desc_list->pool,
                                           prefix, to, "*", NULL);
     }