diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2014-04-21 21:33:36 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-05-02 13:34:31 +0200 |
commit | fcb8e3f1f49bb34c409d8dbd75889eb72be05517 (patch) | |
tree | 16b950c7ba3c1b14969417480f66424404647024 /src/tests | |
parent | ed61bfc5184d9c7a46d17681a22a1abb64423708 (diff) | |
download | sssd-fcb8e3f1f49bb34c409d8dbd75889eb72be05517.tar.gz sssd-fcb8e3f1f49bb34c409d8dbd75889eb72be05517.tar.xz sssd-fcb8e3f1f49bb34c409d8dbd75889eb72be05517.zip |
LDAP: Fix off-by-one bug in sdap_copy_opts
The sdap_copy_opts function copied all the arguments except for the
sentinel.
Reviewed-by: Simo Sorce <simo@redhat.com>
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/ipa_ldap_opt-tests.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/tests/ipa_ldap_opt-tests.c b/src/tests/ipa_ldap_opt-tests.c index 25a094082..bbb49935d 100644 --- a/src/tests/ipa_ldap_opt-tests.c +++ b/src/tests/ipa_ldap_opt-tests.c @@ -48,6 +48,14 @@ struct test_domain test_domains[] = { { NULL, NULL} }; +/* Mock parsing search base without overlinking the test */ +errno_t sdap_parse_search_base(TALLOC_CTX *mem_ctx, + struct dp_option *opts, int class, + struct sdap_search_base ***_search_bases) +{ + return EOK; +} + START_TEST(test_domain_to_basedn) { int ret; @@ -226,6 +234,49 @@ START_TEST(test_copy_opts) } END_TEST +START_TEST(test_copy_sdap_map) +{ + errno_t ret; + struct sdap_attr_map *out_map; + + ret = sdap_copy_map(global_talloc_context, + rfc2307_user_map, SDAP_OPTS_USER, &out_map); + fail_unless(ret == EOK, "[%s]", strerror(ret)); + fail_unless(out_map[SDAP_OPTS_USER].name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].def_name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].sys_name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].opt_name == NULL); + talloc_free(out_map); + + ret = sdap_copy_map(global_talloc_context, + rfc2307bis_user_map, SDAP_OPTS_USER, &out_map); + fail_unless(ret == EOK, "[%s]", strerror(ret)); + fail_unless(out_map[SDAP_OPTS_USER].name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].def_name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].sys_name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].opt_name == NULL); + talloc_free(out_map); + + ret = sdap_copy_map(global_talloc_context, + ipa_user_map, SDAP_OPTS_USER, &out_map); + fail_unless(ret == EOK, "[%s]", strerror(ret)); + fail_unless(out_map[SDAP_OPTS_USER].name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].def_name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].sys_name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].opt_name == NULL); + talloc_free(out_map); + + ret = sdap_copy_map(global_talloc_context, + gen_ad2008r2_user_map, SDAP_OPTS_USER, &out_map); + fail_unless(ret == EOK, "[%s]", strerror(ret)); + fail_unless(out_map[SDAP_OPTS_USER].name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].def_name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].sys_name == NULL); + fail_unless(out_map[SDAP_OPTS_USER].opt_name == NULL); + talloc_free(out_map); +} +END_TEST + Suite *ipa_ldap_opt_suite (void) { Suite *s = suite_create ("ipa_ldap_opt"); @@ -245,6 +296,10 @@ Suite *ipa_ldap_opt_suite (void) tcase_add_test (tc_dp_opts, test_copy_opts); suite_add_tcase (s, tc_dp_opts); + TCase *tc_sdap_opts = tcase_create ("sdap_opts"); + tcase_add_test (tc_sdap_opts, test_copy_sdap_map); + suite_add_tcase (s, tc_sdap_opts); + return s; } |