summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2015-01-26 15:43:08 +0100
committerJakub Hrozek <jhrozek@redhat.com>2015-02-23 16:09:01 +0100
commit35808a6c8cea7baef659192dbb981872f95337ea (patch)
tree890584351db2a03babd56e1ea1cd528da21beb11
parentf3c2dc1f9ccdf456fd78ed96197b9bf404cc29fc (diff)
downloadsssd-35808a6c8cea7baef659192dbb981872f95337ea.tar.gz
sssd-35808a6c8cea7baef659192dbb981872f95337ea.tar.xz
sssd-35808a6c8cea7baef659192dbb981872f95337ea.zip
LDAP: Conditional jump depends on uninitialised value
==31767== at 0x5B66CFC: users_get_posix_check_done (ldap_id.c:346) ==31767== by 0x4DCC6AA: _tevent_req_notify_callback (tevent_req.c:112) ==31767== by 0x4DCC724: tevent_req_finish (tevent_req.c:149) ==31767== by 0x4DCC782: _tevent_req_error (tevent_req.c:167) ==31767== by 0x5B7ED43: sdap_posix_check_done (sdap_async.c:2486) ==31767== by 0x4DCC6AA: _tevent_req_notify_callback (tevent_req.c:112) ==31767== by 0x4DCC724: tevent_req_finish (tevent_req.c:149) ==31767== by 0x4DCC782: _tevent_req_error (tevent_req.c:167) ==31767== by 0x5B7DE37: sdap_get_generic_op_finished (sdap_async.c:1523) ==31767== by 0x5B7D62B: sdap_process_result (sdap_async.c:357) ==31767== by 0x4DCFC1C: tevent_common_loop_timer_delay (tevent_timed.c:341) ==31767== by 0x4DD0E12: epoll_event_loop_once (tevent_epoll.c:911) ==31767== by 0x4DCF23E: std_event_loop_once (tevent_standard.c:114) ==31767== by 0x4DCB38F: _tevent_loop_once (tevent.c:530) ==31767== by 0x4DCB58B: tevent_common_loop_wait (tevent.c:634) ==31767== by 0x4DCF1BE: std_event_loop_wait (tevent_standard.c:140) ==31767== by 0x4DCB627: _tevent_loop_wait (tevent.c:653) ==31767== by 0x489AB98: server_loop (server.c:668) ==31767== by 0x10D035: main (data_provider_be.c:2915) Reviewed-by: Pavel Reichl <preichl@redhat.com>
-rw-r--r--src/providers/ldap/ldap_id.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/providers/ldap/ldap_id.c b/src/providers/ldap/ldap_id.c
index 5ce462d77..226ea6057 100644
--- a/src/providers/ldap/ldap_id.c
+++ b/src/providers/ldap/ldap_id.c
@@ -316,6 +316,7 @@ static void users_get_connect_done(struct tevent_req *subreq)
static void users_get_posix_check_done(struct tevent_req *subreq)
{
errno_t ret;
+ errno_t ret2;
bool has_posix;
int dp_error;
struct tevent_req *req = tevent_req_callback_data(subreq,
@@ -329,8 +330,8 @@ static void users_get_posix_check_done(struct tevent_req *subreq)
/* We can only finish the id_op on error as the connection
* is re-used by the user search
*/
- ret = sdap_id_op_done(state->op, ret, &dp_error);
- if (dp_error == DP_ERR_OK && ret != EOK) {
+ ret2 = sdap_id_op_done(state->op, ret, &dp_error);
+ if (dp_error == DP_ERR_OK && ret2 != EOK) {
/* retry */
ret = users_get_retry(req);
if (ret != EOK) {
@@ -344,7 +345,7 @@ static void users_get_posix_check_done(struct tevent_req *subreq)
/* If the check ran to completion, we know for certain about the attributes
*/
- if (has_posix == false) {
+ if (ret == EOK && has_posix == false) {
state->sdap_ret = ERR_NO_POSIX;
tevent_req_done(req);
return;