[SSSD] [PATCH] SDAP: Check return value before using output arguments
Lukas Slebodnik
lslebodn at redhat.com
Sat May 30 14:52:40 UTC 2015
ehlo,
simple patch is attached.
LS
-------------- next part --------------
>From b6a99bc73353e50c69a35a9db7a2cd87f53cb73b Mon Sep 17 00:00:00 2001
From: Lukas Slebodnik <lslebodn at redhat.com>
Date: Sat, 30 May 2015 09:33:34 -0400
Subject: [PATCH] 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
---
src/providers/ldap/sdap_async.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c
index ca70976b184b8b36fe0244a54f976da86a7b00f0..5263c250b8a15a98e685ca81e636def27ea05894 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);
--
2.4.2
More information about the sssd-devel
mailing list