summaryrefslogtreecommitdiffstats
path: root/src/providers
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2015-05-30 09:33:34 -0400
committerJakub Hrozek <jhrozek@redhat.com>2015-06-01 15:31:48 +0200
commit176244cb1e9df96ce36d36556de1fd766582b1dc (patch)
tree85001ca63de859e422909d1073454d1eeadf66ef /src/providers
parent7a4e3e29196e3abc1746714fcf93624edae89f93 (diff)
downloadsssd-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>
Diffstat (limited to 'src/providers')
-rw-r--r--src/providers/ldap/sdap_async.c14
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);