Fix a denial of service attack against mod_reqtimeout.
[Stefan Fritsch]
+ *) mod_autoindex: Fix inheritance of mod_autoindex directives into
+ contexts that don't have any mod_autoindex directives. PR47766.
+ [Eric Covener]
+
*) mod_rewrite: Add END flag for RewriteRule to prevent further rounds
of rewrite processing when a per-directory substitution occurs.
[Eric Covener]
#define EMIT_XHTML (1 << 17)
#define SHOW_FORBIDDEN (1 << 18)
#define ADDALTCLASS (1 << 19)
+#define OPTION_UNSET (1 << 20)
#define K_NOADJUST 0
#define K_ADJUST 1
new->alt_list = apr_array_make(p, 4, sizeof(struct item));
new->desc_list = apr_array_make(p, 4, sizeof(ai_desc_t));
new->ign_list = apr_array_make(p, 4, sizeof(struct item));
- new->opts = 0;
+ new->opts = OPTION_UNSET;
new->incremented_opts = 0;
new->decremented_opts = 0;
new->default_keyid = '\0';
new->ign_list = apr_array_append(p, add->ign_list, base->ign_list);
new->desc_list = apr_array_append(p, add->desc_list, base->desc_list);
new->icon_list = apr_array_append(p, add->icon_list, base->icon_list);
- if (add->opts & NO_OPTIONS) {
+ if (add->opts == NO_OPTIONS) {
/*
- * If the current directory says 'no options' then we also
+ * If the current directory explicitly says 'no options' then we also
* clear any incremental mods from being inheritable further down.
*/
new->opts = NO_OPTIONS;
* Contrariwise, we *do* inherit if the only settings here are
* incremental ones.
*/
- if (add->opts == 0) {
+ if (add->opts == OPTION_UNSET) {
new->incremented_opts = (base->incremented_opts
| add->incremented_opts)
& ~add->decremented_opts;