diff options
author | Pavel Reichl <preichl@redhat.com> | 2014-11-04 08:52:54 +0000 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-12-02 22:41:07 +0100 |
commit | c9eaf8c1e02c155b7ca7ffb2b1edade8a23ce1ff (patch) | |
tree | 357b3c9afb511d30ad1d4d34bfee040f3da8c076 /src/db | |
parent | b6db8fe1d18bffd600899c8e02f4cea83d70e447 (diff) | |
download | sssd-c9eaf8c1e02c155b7ca7ffb2b1edade8a23ce1ff.tar.gz sssd-c9eaf8c1e02c155b7ca7ffb2b1edade8a23ce1ff.tar.xz sssd-c9eaf8c1e02c155b7ca7ffb2b1edade8a23ce1ff.zip |
SYSDB: sysdb_get_bool() return ENOENT & unit tests
sysdb_get_bool() return ENOENT if no result is found.
Unit test for sysdb_get_bool() & sysdb_set_bool() was added.
This patch also fixes ldap_setup_enumeration() to handle ENOENT returned by
sysdb_has_enumerated().
Resolves:
https://fedorahosted.org/sssd/ticket/1991
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/db')
-rw-r--r-- | src/db/sysdb.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/db/sysdb.c b/src/db/sysdb.c index 1f02585e7..61a224001 100644 --- a/src/db/sysdb.c +++ b/src/db/sysdb.c @@ -1508,6 +1508,7 @@ errno_t sysdb_get_bool(struct sysdb_ctx *sysdb, errno_t ret; int lret; const char *attrs[2] = {attr_name, NULL}; + struct ldb_message_element *el; tmp_ctx = talloc_new(NULL); if (tmp_ctx == NULL) { @@ -1530,7 +1531,7 @@ errno_t sysdb_get_bool(struct sysdb_ctx *sysdb, * to contain this attribute. */ *value = false; - ret = EOK; + ret = ENOENT; goto done; } else if (res->count != 1) { DEBUG(SSSDBG_CRIT_FAILURE, @@ -1539,6 +1540,12 @@ errno_t sysdb_get_bool(struct sysdb_ctx *sysdb, goto done; } + el = ldb_msg_find_element(res->msgs[0], attr_name); + if (el == NULL || el->num_values == 0) { + ret = ENOENT; + goto done; + } + *value = ldb_msg_find_attr_as_bool(res->msgs[0], attr_name, false); ret = EOK; |