lighttpd 1.4.x
https://www.lighttpd.net/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
#include "first.h" |
|
|
|
#undef NDEBUG |
|
#include <assert.h> |
|
#include <stdlib.h> |
|
#include <stdio.h> |
|
|
|
#include "mod_access.c" |
|
|
|
static void test_mod_access_check(void) { |
|
array *allow = array_init(0); |
|
array *deny = array_init(0); |
|
buffer *urlpath = buffer_init(); |
|
int lc = 0; |
|
|
|
/* empty allow and deny lists */ |
|
buffer_copy_string_len(urlpath, CONST_STR_LEN("/")); |
|
assert(1 == mod_access_check(allow, deny, urlpath, lc)); |
|
|
|
array_insert_value(deny, CONST_STR_LEN("~")); |
|
array_insert_value(deny, CONST_STR_LEN(".inc")); |
|
|
|
/* deny */ |
|
buffer_copy_string_len(urlpath, CONST_STR_LEN("/index.html~")); |
|
assert(0 == mod_access_check(allow, deny, urlpath, lc)); |
|
lc = 1; |
|
buffer_copy_string_len(urlpath, CONST_STR_LEN("/index.INC")); |
|
assert(0 == mod_access_check(allow, deny, urlpath, lc)); |
|
lc = 0; |
|
|
|
array_insert_value(allow, CONST_STR_LEN(".txt")); |
|
array_insert_value(deny, CONST_STR_LEN(".txt"));/* allow takes precedence */ |
|
|
|
/* explicitly allowed */ |
|
buffer_copy_string_len(urlpath, CONST_STR_LEN("/ssi-include.txt")); |
|
assert(1 == mod_access_check(allow, deny, urlpath, lc)); |
|
lc = 1; |
|
buffer_copy_string_len(urlpath, CONST_STR_LEN("/ssi-include.TXT")); |
|
assert(1 == mod_access_check(allow, deny, urlpath, lc)); |
|
lc = 0; |
|
|
|
/* allow not empty and urlpath not explicitly allowed */ |
|
buffer_copy_string_len(urlpath, CONST_STR_LEN("/cgi.pl")); |
|
assert(0 == mod_access_check(allow, deny, urlpath, lc)); |
|
|
|
array_free(allow); |
|
array_free(deny); |
|
buffer_free(urlpath); |
|
} |
|
|
|
int main (void) { |
|
test_mod_access_check(); |
|
|
|
return 0; |
|
} |
|
|
|
/* |
|
* stub functions |
|
*/ |
|
|
|
int config_plugin_values_init(server *srv, void *p_d, const config_plugin_keys_t *cpk, const char *mname) { |
|
UNUSED(srv); |
|
UNUSED(p_d); |
|
UNUSED(cpk); |
|
UNUSED(mname); |
|
return 0; |
|
} |
|
|
|
int config_check_cond(request_st *r, int context_ndx) { |
|
UNUSED(r); |
|
UNUSED(context_ndx); |
|
return 0; |
|
}
|
|
|