diff options
author | Lukas Slebodnik <lslebodn@redhat.com> | 2015-05-30 09:33:34 -0400 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-06-01 15:31:48 +0200 |
commit | 176244cb1e9df96ce36d36556de1fd766582b1dc (patch) | |
tree | 85001ca63de859e422909d1073454d1eeadf66ef | |
parent | 7a4e3e29196e3abc1746714fcf93624edae89f93 (diff) | |
download | sssd-176244cb1e9df96ce36d36556de1fd766582b1dc.tar.gz sssd-176244cb1e9df96ce36d36556de1fd766582b1dc.tar.xz sssd-176244cb1e9df96ce36d36556de1fd766582b1dc.zip |
SDAP: Check return value before using output arguments
==18139== Conditional jump or move depends on uninitialised value(s)
==18139== at 0x14400F1B: generic_ext_search_handler.isra.3 (sdap_async.c:1626)
==18139== by 0x879D7E3: tevent_common_loop_immediate (tevent_immediate.c:135)
==18139== by 0x87A20CD: epoll_event_loop_once (tevent_epoll.c:907)
==18139== by 0x87A07D6: std_event_loop_once (tevent_standard.c:114)
==18139== by 0x879CFBC: _tevent_loop_once (tevent.c:530)
==18139== by 0x879D15A: tevent_common_loop_wait (tevent.c:634)
==18139== by 0x87A0776: std_event_loop_wait (tevent_standard.c:140)
==18139== by 0x5293862: server_loop (server.c:668)
==18139== by 0x10EA41: main (data_provider_be.c:2909
Related tickets:
https://fedorahosted.org/sssd/ticket/2645
https://fedorahosted.org/sssd/ticket/2662
Reviewed-by: Pavel Reichl <preichl@redhat.com>
-rw-r--r-- | src/providers/ldap/sdap_async.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c index ca70976b1..5263c250b 100644 --- a/src/providers/ldap/sdap_async.c +++ b/src/providers/ldap/sdap_async.c @@ -1623,6 +1623,14 @@ static void generic_ext_search_handler(struct tevent_req *subreq, ret = sdap_get_generic_ext_recv(subreq, req, &ref_count, &refs); talloc_zfree(subreq); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, + "sdap_get_generic_ext_recv failed [%d]: %s\n", + ret, sss_strerror(ret)); + tevent_req_error(req, ret); + return; + } + if (ref_count > 0) { if (dp_opt_get_bool(opts->basic, SDAP_REFERRALS)) { /* We got back referrals here, but they should have @@ -1643,12 +1651,6 @@ static void generic_ext_search_handler(struct tevent_req *subreq, " Ref: %s\n", refs[i]); } } - } else if (ret) { - DEBUG(SSSDBG_OP_FAILURE, - "sdap_get_generic_ext_recv failed [%d]: %s\n", - ret, sss_strerror(ret)); - tevent_req_error(req, ret); - return; } tevent_req_done(req); |