summaryrefslogtreecommitdiff
path: root/www/apache6/patches/patch-af
diff options
context:
space:
mode:
Diffstat (limited to 'www/apache6/patches/patch-af')
-rw-r--r--www/apache6/patches/patch-af86
1 files changed, 86 insertions, 0 deletions
diff --git a/www/apache6/patches/patch-af b/www/apache6/patches/patch-af
new file mode 100644
index 00000000000..f586fbd0f48
--- /dev/null
+++ b/www/apache6/patches/patch-af
@@ -0,0 +1,86 @@
+$NetBSD: patch-af,v 1.1.1.1 1999/07/23 17:53:30 itojun Exp $
+
+--- src/modules/standard/mod_include.c.orig Thu Sep 24 10:06:42 1998
++++ src/modules/standard/mod_include.c Mon Dec 7 11:17:39 1998
+@@ -92,7 +92,11 @@
+ #include "http_log.h"
+ #include "http_main.h"
+ #include "util_script.h"
++#include "ap_include_extern.h"
++#include "ap_hook.h"
+ #endif
++#define get_tag ap_include_get_tag
++#define parse_string ap_include_parse_string
+
+ #define STARTING_SEQUENCE "<!--#"
+ #define ENDING_SEQUENCE "-->"
+@@ -354,7 +358,8 @@
+ * the tag value is html decoded if dodecode is non-zero
+ */
+
+-static char *get_tag(pool *p, FILE *in, char *tag, int tagbuf_len, int dodecode)
++API_EXPORT(char *)
++ap_include_get_tag(pool *p, FILE *in, char *tag, int tagbuf_len, int dodecode)
+ {
+ char *t = tag, *tag_val, c, term;
+
+@@ -473,7 +478,7 @@
+ /*
+ * Do variable substitution on strings
+ */
+-static void parse_string(request_rec *r, const char *in, char *out,
++API_EXPORT(void) ap_include_parse_string(request_rec *r, const char *in, char *out,
+ size_t length, int leave_name)
+ {
+ char ch;
+@@ -666,7 +671,8 @@
+ parse_string(r, tag_val, parsed_string, sizeof(parsed_string), 0);
+ if (tag[0] == 'f') {
+ /* be safe; only files in this directory or below allowed */
+- if (!is_only_below(parsed_string)) {
++ if ((ap_allow_options(r) & OPT_INCNOEXEC) &&
++ !is_only_below(parsed_string)) {
+ error_fmt = "unable to include file \"%s\" "
+ "in parsed file %s";
+ }
+@@ -1010,7 +1016,8 @@
+ int ret=0;
+
+ if (!strcmp(tag, "file")) {
+- ap_getparents(tag_val); /* get rid of any nasties */
++ if (ap_allow_options(r) & OPT_INCNOEXEC)
++ ap_getparents(tag_val); /* get rid of any nasties */
+
+ rr = ap_sub_req_lookup_file(tag_val, r);
+
+@@ -2090,6 +2097,16 @@
+ }
+ }
+
++API_EXPORT(int)
++ap_include_register_extern(const char *cmd, ap_include_extern_func func) {
++ char cmdbuf[40] = "include::";
++
++ strncat(cmdbuf, cmd, 30);
++ ap_hook_configure(cmdbuf, AP_HOOK_SIG5(int,ptr,ptr,ptr,ptr), AP_HOOK_TOPMOST);
++ ap_hook_register(cmdbuf, func, NULL);
++
++ return 0;
++}
+
+
+ /* -------------------------- The main function --------------------------- */
+@@ -2214,6 +2231,13 @@
+ }
+ #endif
+ else {
++ char cmdbuf[40] = "include::";
++
++ strncat(cmdbuf, directive, 30);
++ if ((ap_hook_status(cmdbuf) >= AP_HOOK_STATE_CONFIGURED) &&
++ (ap_hook_call(cmdbuf, &ret, f, r, error, timefmt) == TRUE))
++ continue;
++
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
+ "httpd: unknown directive \"%s\" "
+ "in parsed doc %s",