summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-10-30 21:35:18 +0100
committerJakub Hrozek <jhrozek@redhat.com>2013-10-30 22:54:40 +0100
commit0fdc72560277374fec73934a613d8863190e2b39 (patch)
tree4e1b272495468cd468e08984ee7eb9c11fde9199
parent8b969e9466b40da7880fff246935eecb627f5031 (diff)
downloadsssd-0fdc72560277374fec73934a613d8863190e2b39.tar.gz
sssd-0fdc72560277374fec73934a613d8863190e2b39.tar.xz
sssd-0fdc72560277374fec73934a613d8863190e2b39.zip
AD: Fix ad_access_filter parsing with empty filter
-rw-r--r--src/providers/ad/ad_access.c8
-rw-r--r--src/tests/cmocka/test_ad_access_filter.c16
2 files changed, 24 insertions, 0 deletions
diff --git a/src/providers/ad/ad_access.c b/src/providers/ad/ad_access.c
index c16f04942..6995172db 100644
--- a/src/providers/ad/ad_access.c
+++ b/src/providers/ad/ad_access.c
@@ -169,12 +169,20 @@ ad_parse_access_filter(TALLOC_CTX *mem_ctx,
int flags;
TALLOC_CTX *tmp_ctx;
+ if (_filter == NULL) return EINVAL;
+
tmp_ctx = talloc_new(mem_ctx);
if (tmp_ctx == NULL) {
ret = ENOMEM;
goto done;
}
+ if (filter_list == NULL) {
+ *_filter = NULL;
+ ret = EOK;
+ goto done;
+ }
+
ret = split_on_separator(tmp_ctx, filter_list, '?', true, true,
&filters, &nfilters);
if (ret != EOK) {
diff --git a/src/tests/cmocka/test_ad_access_filter.c b/src/tests/cmocka/test_ad_access_filter.c
index e31f2dc37..3f4e44f14 100644
--- a/src/tests/cmocka/test_ad_access_filter.c
+++ b/src/tests/cmocka/test_ad_access_filter.c
@@ -99,6 +99,18 @@ done:
talloc_free(tmp_ctx);
}
+/* Test that setting no filter lets all access through
+ */
+void test_no_filter(void **state)
+{
+ struct filter_parse_result expected = {
+ .result = EOK,
+ .best_match = NULL
+ };
+
+ test_parse_filter_generic(NULL, &expected);
+}
+
/* Test that if one filter is provided, it is returned as-is
*/
void test_single_filter(void **state)
@@ -304,6 +316,10 @@ int main(int argc, const char *argv[])
parse_test_setup,
parse_test_teardown),
+ unit_test_setup_teardown(test_no_filter,
+ ad_access_filter_test_setup,
+ ad_access_filter_test_teardown),
+
unit_test_setup_teardown(test_single_filter,
ad_access_filter_test_setup,
ad_access_filter_test_teardown),