[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