I'm using a (third-party/closed) module which replaces newlines in
header values (like base64 encoded PEMs) with obs-fold.
That's probably obsolete, but not forbidden per se...
How about something like:
Index: modules/http/http_filters.c
===================================================================
--- modules/http/http_filters.c (revision 1776920)
+++ modules/http/http_filters.c (working copy)
@@ -701,19 +701,26 @@ static int check_header(void *arg, const char *nam
return 0;
}
- if (ctx->strict) {
- test = ap_scan_http_token(name);
- }
- else {
- test = ap_scan_vchar_obstext(name);
- }
- if (*test) {
- ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, ctx->r, APLOGNO(02429)
- "Response header name '%s' contains invalid "
- "characters, aborting request",
- name);
- return 0;
- }
+ test = name;
+ do {
+ if (ctx->strict) {
+ test = ap_scan_http_token(test);
+ }
+ else {
+ test = ap_scan_vchar_obstext(test);
+ }
+ if (*test) {
+ if (test[0] != CR || test[1] != LF || (test[2] != ' ' &&
+ test[2] != '\t')) {
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, ctx->r, APLOGNO(02429)
+ "Response header name '%s' contains invalid "
+ "characters, aborting request",
+ name);
+ return 0;
+ }
+ test += 3;
+ }
+ } while (*test);
test = ap_scan_http_field_content(val);
if (*test) {
?