URL:
https://github.com/SSSD/sssd/pull/778
Title: #778: ipa s2n: try to remove objects not found on the server
jhrozek commented:
"""
in general, the code looks good, but there are some warnings that clang and coverity
found:
```
Error: UNINIT (CWE-457):
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1758: var_decl: Declaring variable
"ret" without initializer.
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1842: uninit_use: Using uninitialized value
"ret".
# 1840|
# 1841| done:
# 1842|-> if (ret != EOK) {
# 1843| DEBUG(SSSDBG_OP_FAILURE,
# 1844| "Error while trying to remove user or group from
cache.\n");
Error: COMPILER_WARNING:
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c: scope_hint: In function
'ipa_s2n_get_user_done'
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1842:8: warning: 'ret' may be used
uninitialized in this function [-Wmaybe-uninitialized]
# if (ret != EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1758:9: note: 'ret' was declared
here
# int ret;
# ^~~
# 1840|
# 1841| done:
# 1842|-> if (ret != EOK) {
# 1843| DEBUG(SSSDBG_OP_FAILURE,
# 1844| "Error while trying to remove user or group from
cache.\n");
Error: CLANG_WARNING:
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1842:13: warning: The left operand of
'!=' is a garbage value
# if (ret != EOK) {
# ~~~ ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1758:5: note: 'ret' declared without
an initial value
# int ret;
# ^~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1763:9: note: Assuming the condition is
false
# if (req_input->type == REQ_INP_ID) {
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1763:5: note: Taking false branch
# if (req_input->type == REQ_INP_ID) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1772:5: note: Control jumps to the
'default' case at line 1837
# switch (entry_type) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:1842:13: note: The left operand of
'!=' is a garbage value
# if (ret != EOK) {
# ~~~ ^
# 1840|
# 1841| done:
# 1842|-> if (ret != EOK) {
# 1843| DEBUG(SSSDBG_OP_FAILURE,
# 1844| "Error while trying to remove user or group from
cache.\n");
Error: CLANG_WARNING:
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2206:13: warning: 1st function call argument
is an uninitialized value
# talloc_free(user_base_dn);
# ^
/usr/include/talloc.h:228:26: note: expanded from macro 'talloc_free'
##define talloc_free(ctx) _talloc_free(ctx, __location__)
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2291:9: note: Assuming 'tmp_ctx' is
not equal to NULL
# if (tmp_ctx == NULL) {
# ^~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2291:5: note: Taking false branch
# if (tmp_ctx == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2298:9: note: Assuming the condition is
false
# if (attrs->sysdb_attrs == NULL) {
# ^~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2298:5: note: Taking false branch
# if (attrs->sysdb_attrs == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2307:5: note: Taking true branch
# if (attrs->sysdb_attrs != NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2310:13: note: Assuming 'ret' is not
equal to EOK
# if (ret == EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2310:9: note: Taking false branch
# if (ret == EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2318:20: note: Assuming 'ret' is equal
to ENOENT
# } else if (ret == ENOENT) {
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2318:16: note: Taking true branch
# } else if (ret == ENOENT) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2327:13: note: Assuming 'ret' is not
equal to EOK
# if (ret == EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2327:9: note: Taking false branch
# if (ret == EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2335:20: note: Assuming 'ret' is equal
to ENOENT
# } else if (ret != ENOENT) {
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2335:16: note: Taking false branch
# } else if (ret != ENOENT) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2341:13: note: Assuming 'ret' is not
equal to EOK
# if (ret == EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2341:9: note: Taking false branch
# if (ret == EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2349:20: note: Assuming 'ret' is equal
to ENOENT
# } else if (ret == ENOENT) {
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2349:16: note: Taking true branch
# } else if (ret == ENOENT) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2357:9: note: Assuming the condition is
false
# if (strcmp(dom->name, attrs->domain_name) != 0) {
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2357:5: note: Taking false branch
# if (strcmp(dom->name, attrs->domain_name) != 0) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2368:5: note: Control jumps to 'case
RESP_USER:' at line 2369
# switch (attrs->response_type) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2372:17: note: Assuming the condition is
true
# if (dom->subdomain_homedir
# ^~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2372:17: note: Left side of
'&&' is true
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2372:13: note: Taking true branch
# if (dom->subdomain_homedir
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2385:21: note: Assuming the condition is
false
# if (attrs->a.user.pw_dir == NULL) {
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2385:17: note: Taking false branch
# if (attrs->a.user.pw_dir == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2391:13: note: Taking true branch
# if (name == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2396:17: note: Assuming 'ret' is equal
to EOK
# if (ret != EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2396:13: note: Taking false branch
# if (ret != EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2402:13: note: Taking true branch
# if (upn == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2410:21: note: Assuming 'realm' is
non-null
# if (!realm) {
# ^~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2410:17: note: Taking false branch
# if (!realm) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2418:21: note: Assuming 'ret' is equal
to EOK
# if (ret != EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2418:17: note: Taking false branch
# if (ret != EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2426:21: note: Assuming 'upn' is
non-null
# if (!upn) {
# ^~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2426:17: note: Taking false branch
# if (!upn) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2437:21: note: Assuming 'ret' is equal
to EOK
# if (ret != EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2437:17: note: Taking false branch
# if (ret != EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2444:17: note: Assuming the condition is
false
# if (req_input->type == REQ_INP_SECID) {
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2444:13: note: Taking false branch
# if (req_input->type == REQ_INP_SECID) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2455:17: note: Assuming 'simple_attrs'
is equal to NULL
# if (simple_attrs != NULL
# ^~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2456:21: note: Left side of
'&&' is false
# && simple_attrs->response_type == RESP_SID) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2467:17: note: Assuming the condition is
true
# if (attrs->response_type == RESP_USER_GROUPLIST
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2467:17: note: Left side of
'&&' is true
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2468:24: note: Assuming
'update_initgr_timeout' is 0
# && update_initgr_timeout) {
# ^~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2467:13: note: Taking false branch
# if (attrs->response_type == RESP_USER_GROUPLIST
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2483:17: note: Assuming the condition is
false
# if (dom->mpg == false) {
# ^~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2483:13: note: Taking false branch
# if (dom->mpg == false) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2493:21: note: Assuming 'ret' is equal
to EOK
# if (ret == EOK || ret == ENOENT) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2493:32: note: Left side of '||' is
true
# if (ret == EOK || ret == ENOENT) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2494:26: note: Assuming 'orig_gid' is
equal to 0
# if ((orig_gid != 0 && orig_gid != attrs->a.user.pw_gid)
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2494:40: note: Left side of
'&&' is false
# if ((orig_gid != 0 && orig_gid != attrs->a.user.pw_gid)
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2494:21: note: Taking false branch
# if ((orig_gid != 0 && orig_gid != attrs->a.user.pw_gid)
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2523:17: note: Assuming 'ret' is not
equal to ENOENT
# if (ret == ENOENT) {
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2523:13: note: Taking false branch
# if (ret == ENOENT) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2529:17: note: Assuming 'ret' is not
equal to ENOENT
# if (ret == ENOENT) {
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2529:13: note: Taking false branch
# if (ret == ENOENT) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2535:17: note: Assuming 'ret' is not
equal to ENOENT
# if (ret == ENOENT) {
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2535:13: note: Taking false branch
# if (ret == ENOENT) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2540:17: note: Assuming 'ret' is equal
to EOK
# if (ret != EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2540:13: note: Taking false branch
# if (ret != EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2551:36: note: '?' condition is true
# missing[0] == NULL ? NULL
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2554:17: note: Assuming 'ret' is not
equal to EEXIST
# if (ret == EEXIST && dom->mpg == true) {
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2554:31: note: Left side of
'&&' is false
# if (ret == EEXIST && dom->mpg == true) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2588:24: note: Assuming 'ret' is equal
to EOK
# } else if (ret != EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2588:20: note: Taking false branch
# } else if (ret != EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2595:17: note: Assuming 'mapped_attrs'
is equal to NULL
# if (mapped_attrs != NULL) {
# ^~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2595:13: note: Taking false branch
# if (mapped_attrs != NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2604:13: note: Taking false branch
# if (gid_override_attrs != NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2613:13: note: Taking true branch
# if (attrs->response_type == RESP_USER_GROUPLIST) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2616:21: note: Assuming 'ret' is equal
to EOK
# if (ret != EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2616:17: note: Taking false branch
# if (ret != EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2621:23: note: Calling
'get_groups_dns'
# ret = get_groups_dns(tmp_ctx, dom, attrs->groups, &groups_dns);
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2152:5: note: 'user_base_dn' declared
without an initial value
# struct ldb_dn *user_base_dn;
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2154:9: note: Assuming 'name_list' is
not equal to NULL
# if (name_list == NULL) {
# ^~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2154:5: note: Taking false branch
# if (name_list == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2166:9: note: Assuming the condition is
false
# if (root_domain->fqnames) {
# ^~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2166:5: note: Taking false branch
# if (root_domain->fqnames) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2174:9: note: Assuming 'tmp_ctx' is
not equal to NULL
# if (tmp_ctx == NULL) {
# ^~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2174:5: note: Taking false branch
# if (tmp_ctx == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2179:17: note: Assuming the condition is
true
# for (c = 0; name_list[c] != NULL; c++);
# ^~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2179:5: note: Loop condition is true.
Entering loop body
# for (c = 0; name_list[c] != NULL; c++);
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2179:17: note: Assuming the condition is
false
# for (c = 0; name_list[c] != NULL; c++);
# ^~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2179:5: note: Loop condition is false.
Execution continues on line 2181
# for (c = 0; name_list[c] != NULL; c++);
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2182:9: note: Assuming 'dn_list' is
not equal to NULL
# if (dn_list == NULL) {
# ^~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2182:5: note: Taking false branch
# if (dn_list == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2189:5: note: Loop condition is true.
Entering loop body
# for (c = 0; name_list[c] != NULL; c++) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2191:13: note: Assuming 'dom' is not
equal to NULL
# if (dom == NULL) {
# ^~~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2191:9: note: Taking false branch
# if (dom == NULL) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2205:13: note: Assuming 'ret' is equal
to EOK
# if (ret == EOK) {
# ^~~~~~~~~~
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2205:9: note: Taking true branch
# if (ret == EOK) {
# ^
sssd-2.1.1/src/providers/ipa/ipa_s2n_exop.c:2206:13: note: 1st function call argument is
an uninitialized value
# talloc_free(user_base_dn);
# ^ ~~~~~~~~~~~~
/usr/include/talloc.h:228:26: note: expanded from macro 'talloc_free'
##define talloc_free(ctx) _talloc_free(ctx, __location__)
# ^ ~~~
# 2204| &msg);
# 2205| if (ret == EOK) {
# 2206|-> talloc_free(user_base_dn);
# 2207| user_base_dn = sysdb_user_base_dn(tmp_ctx, dom);
# 2208| if (user_base_dn == NULL) {
Error: UNUSED_VALUE (CWE-563):
sssd-2.1.1/src/providers/ldap/ldap_id.c:85: value_overwrite: Overwriting previous write to
"ret" with value from "sysdb_delete_user(domain, NULL, uid)".
sssd-2.1.1/src/providers/ldap/ldap_id.c:82: assigned_value: Assigning value from
"*__errno_location() ? *__errno_location() : 22" to "ret" here, but
that stored value is overwritten before it can be used.
# 80| uid = (uid_t) strtouint32(filter_value, &endptr, 10);
# 81| if (errno || *endptr || (filter_value == endptr)) {
# 82|-> ret = errno ? errno : EINVAL;
# 83| }
# 84|
Error: CLANG_WARNING:
sssd-2.1.1/src/providers/ldap/ldap_id.c:82:13: warning: Value stored to 'ret' is
never read
# ret = errno ? errno : EINVAL;
# ^ ~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:82:13: note: Value stored to 'ret' is
never read
# ret = errno ? errno : EINVAL;
# ^ ~~~~~~~~~~~~~~~~~~~~~~
# 80| uid = (uid_t) strtouint32(filter_value, &endptr, 10);
# 81| if (errno || *endptr || (filter_value == endptr)) {
# 82|-> ret = errno ? errno : EINVAL;
# 83| }
# 84|
Error: UNINIT (CWE-457):
sssd-2.1.1/src/providers/ldap/ldap_id.c:44: var_decl: Declaring variable "ret"
without initializer.
sssd-2.1.1/src/providers/ldap/ldap_id.c:116: uninit_use: Using uninitialized value
"ret".
# 114|
# 115| talloc_free(msg);
# 116|-> return ret;
# 117| }
# 118|
Error: CLANG_WARNING:
sssd-2.1.1/src/providers/ldap/ldap_id.c:116:5: warning: Undefined or garbage value
returned to caller
# return ret;
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:536:9: note: Assuming 'dp_error' is not
equal to DP_ERR_OK
# if (dp_error == DP_ERR_OK && ret != EOK) {
# ^~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:536:31: note: Left side of '&&' is
false
# if (dp_error == DP_ERR_OK && ret != EOK) {
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:547:10: note: Assuming 'ret' is equal to
ENOENT
# if ((ret == ENOENT) &&
# ^~~~~~~~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:547:9: note: Left side of '&&' is
true
# if ((ret == ENOENT) &&
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:548:10: note: Assuming the condition is false
# (state->ctx->opts->schema_type == SDAP_SCHEMA_RFC2307) &&
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:548:64: note: Left side of '&&' is
false
# (state->ctx->opts->schema_type == SDAP_SCHEMA_RFC2307) &&
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:582:9: note: Left side of '&&' is
true
# if (ret && ret != ENOENT) {
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:582:5: note: Taking false branch
# if (ret && ret != ENOENT) {
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:588:9: note: Left side of '&&' is
true
# if (ret == ENOENT && state->noexist_delete == true) {
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:588:26: note: Assuming the condition is true
# if (ret == ENOENT && state->noexist_delete == true) {
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:588:5: note: Taking true branch
# if (ret == ENOENT && state->noexist_delete == true) {
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:589:15: note: Calling
'users_get_handle_no_user'
# ret = users_get_handle_no_user(state, state->domain, state->filter_type,
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:44:5: note: 'ret' declared without an
initial value
# int ret;
# ^~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:50:5: note: Control jumps to 'case 1:' at
line 54
# switch (filter_type) {
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:55:13: note: Assuming 'name_is_upn' is not
equal to true
# if (name_is_upn == true) {
# ^~~~~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:55:9: note: Taking false branch
# if (name_is_upn == true) {
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:67:13: note: Assuming 'del_name' is equal
to NULL
# if (del_name == NULL) {
# ^~~~~~~~~~~~~~~~
sssd-2.1.1/src/providers/ldap/ldap_id.c:67:9: note: Taking true branch
# if (del_name == NULL) {
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:68:13: note: Execution continues on line 115
# break;
# ^
sssd-2.1.1/src/providers/ldap/ldap_id.c:116:5: note: Undefined or garbage value returned
to caller
# return ret;
# ^ ~~~
# 114|
# 115| talloc_free(msg);
# 116|-> return ret;
# 117| }
# 118|
```
"""
See the full comment at
https://github.com/SSSD/sssd/pull/778#issuecomment-473258142