summaryrefslogtreecommitdiff
path: root/src/mod_redirect.c
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2017-03-05 15:39:45 -0500
committerGlenn Strauss <gstrauss@gluelogic.com>2017-03-08 11:42:59 -0500
commitbd77abe0f81f196006dbd46d7be61e7cc36911be (patch)
tree8f3b4ca98ee0a1a5d5a17aea96bdfe536bd8839c /src/mod_redirect.c
parent970f337c29e74b3e5f076cee105abc9739a9bd72 (diff)
downloadlighttpd-git-bd77abe0f81f196006dbd46d7be61e7cc36911be.tar.gz
[config] more specific checks for array lists
More specific checks on contents of array lists. Each module using lists now does better checking on the types of values in the list (strings, integers, arrays/lists) This helps prevent misconfiguration of things like cgi.assign, fastcgi.server, and scgi.server, where source code might be served as static files if parenthesis are misplaced. x-ref: https://redmine.lighttpd.net/boards/2/topics/6571
Diffstat (limited to 'src/mod_redirect.c')
-rw-r--r--src/mod_redirect.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/mod_redirect.c b/src/mod_redirect.c
index e0ee5bae..4812e90d 100644
--- a/src/mod_redirect.c
+++ b/src/mod_redirect.c
@@ -107,25 +107,15 @@ SETDEFAULTS_FUNC(mod_redirect_set_defaults) {
continue;
}
- if (du->type != TYPE_ARRAY) {
- log_error_write(srv, __FILE__, __LINE__, "sss",
- "unexpected type for key: ", "url.redirect", "array of strings");
+ da = (data_array *)du;
+ if (du->type != TYPE_ARRAY || !array_is_kvstring(da->value)) {
+ log_error_write(srv, __FILE__, __LINE__, "s",
+ "unexpected value for url.redirect; expected list of \"regex\" => \"redirect\"");
return HANDLER_ERROR;
}
- da = (data_array *)du;
-
for (j = 0; j < da->value->used; j++) {
- if (da->value->data[j]->type != TYPE_STRING) {
- log_error_write(srv, __FILE__, __LINE__, "sssbs",
- "unexpected type for key: ",
- "url.redirect",
- "[", da->value->data[j]->key, "](string)");
-
- return HANDLER_ERROR;
- }
-
if (0 != pcre_keyvalue_buffer_append(srv, s->redirect,
((data_string *)(da->value->data[j]))->key->ptr,
((data_string *)(da->value->data[j]))->value->ptr)) {