Hi,

I accidentally found this issue in ldap_id.c and then checked to code
if I can find other places as well.

There are still two places, in ipa_hbac_rule_info_send() and
sdap_id_op_connect_send() where NULL is not returned immediately if
tevent_req_create() fails, but I think both are save.

bye,
Sumit
From ed2e08e2476359e57d8c0a9dcda1419bcf640d46 Mon Sep 17 00:00:00 2001
From: Sumit Bose <sb...@redhat.com>
Date: Wed, 10 Feb 2016 15:15:41 +0100
Subject: [PATCH] Just return NULL if tevent_req_create() fails

In general we just return NULL if tevent_req_create() fails because
there is nothing we can do with the request anyway. Especially
tevent_req_error() should not be called because it tries to dereference
req.
---
 src/providers/ldap/ldap_id.c        | 3 +--
 src/resolv/async_resolv.c           | 3 +--
 src/responder/autofs/autofssrv_dp.c | 3 +--
 src/responder/ssh/sshsrv_dp.c       | 3 +--
 src/responder/sudo/sudosrv_dp.c     | 3 +--
 5 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/providers/ldap/ldap_id.c b/src/providers/ldap/ldap_id.c
index 
a51c5271b0ccdf4ef0671e8292aa06c7988ffc5b..b7cef4e13d70f738428cdbf70b661de92a87b4a5
 100644
--- a/src/providers/ldap/ldap_id.c
+++ b/src/providers/ldap/ldap_id.c
@@ -1490,8 +1490,7 @@ sdap_handle_acct_req_send(TALLOC_CTX *mem_ctx,
     req = tevent_req_create(mem_ctx, &state,
                             struct sdap_handle_acct_req_state);
     if (!req) {
-        ret = ENOMEM;
-        goto done;
+        return NULL;
     }
     state->ar = ar;
 
diff --git a/src/resolv/async_resolv.c b/src/resolv/async_resolv.c
index 
1035924208391f31297a423960adf51a45870665..58d5c6e550bb34cbaa50517323133fad4f900980
 100644
--- a/src/resolv/async_resolv.c
+++ b/src/resolv/async_resolv.c
@@ -694,8 +694,7 @@ resolv_gethostbyname_files_send(TALLOC_CTX *mem_ctx,
     req = tevent_req_create(mem_ctx, &state,
                             struct gethostbyname_files_state);
     if (req == NULL) {
-        tevent_req_error(req, ENOMEM);
-        goto done;
+        return NULL;
     }
 
     state->resolv_ctx = ctx;
diff --git a/src/responder/autofs/autofssrv_dp.c 
b/src/responder/autofs/autofssrv_dp.c
index 
041f0629eafadb92fc6b8ec7190830a2662b40a0..5793e40fc54d13ca4c680eb870d34935af99298e
 100644
--- a/src/responder/autofs/autofssrv_dp.c
+++ b/src/responder/autofs/autofssrv_dp.c
@@ -56,8 +56,7 @@ sss_dp_get_autofs_send(TALLOC_CTX *mem_ctx,
 
     req = tevent_req_create(mem_ctx, &state, struct sss_dp_req_state);
     if (!req) {
-        ret = ENOMEM;
-        goto error;
+        return NULL;
     }
 
     if (!dom) {
diff --git a/src/responder/ssh/sshsrv_dp.c b/src/responder/ssh/sshsrv_dp.c
index 
90b0b5754e695c4757287d8694e390daee17af5d..b9878f8bc99bccce12c40ad212d1fc38d239cab9
 100644
--- a/src/responder/ssh/sshsrv_dp.c
+++ b/src/responder/ssh/sshsrv_dp.c
@@ -56,8 +56,7 @@ sss_dp_get_ssh_host_send(TALLOC_CTX *mem_ctx,
 
     req = tevent_req_create(mem_ctx, &state, struct sss_dp_req_state);
     if (!req) {
-        ret = ENOMEM;
-        goto error;
+        return NULL;
     }
 
     if (!dom) {
diff --git a/src/responder/sudo/sudosrv_dp.c b/src/responder/sudo/sudosrv_dp.c
index 
95595fba2ad81e837de7222ece626d331299848c..3c3ac8b756b179cb1882e6598935970c8961d6e2
 100644
--- a/src/responder/sudo/sudosrv_dp.c
+++ b/src/responder/sudo/sudosrv_dp.c
@@ -62,8 +62,7 @@ sss_dp_get_sudoers_send(TALLOC_CTX *mem_ctx,
 
     req = tevent_req_create(mem_ctx, &state, struct sss_dp_req_state);
     if (!req) {
-        ret = ENOMEM;
-        goto error;
+        return NULL;
     }
 
     if (!dom) {
-- 
2.1.0

_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to