74 lines
2.5 KiB
Diff
74 lines
2.5 KiB
Diff
From acfc393638ad1b81a4234173b060bb63907ee52c Mon Sep 17 00:00:00 2001
|
|
From: Pavel Zhukov <pzhukov@redhat.com>
|
|
Date: Mon, 1 Oct 2018 15:51:01 +0200
|
|
Subject: [PATCH] Replace simple return with cleanup flow
|
|
|
|
Make cleanup more consistence to prevent leaks of memory pointed by
|
|
filter/base/res
|
|
---
|
|
ptclient/ldap.c | 17 ++++++++++-------
|
|
1 file changed, 10 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/ptclient/ldap.c b/ptclient/ldap.c
|
|
index 0b82d2c6b..65bae7bd6 100644
|
|
--- a/ptclient/ldap.c
|
|
+++ b/ptclient/ldap.c
|
|
@@ -1388,13 +1388,14 @@ static int ptsmodule_make_authstate_group(
|
|
|
|
if (strncmp(canon_id, "group:", 6)) { // Sanity check
|
|
*reply = "not a group identifier";
|
|
- return PTSM_FAIL;
|
|
+ rc = PTSM_FAIL;
|
|
+ goto done;
|
|
}
|
|
|
|
rc = ptsmodule_connect();
|
|
if (rc != PTSM_OK) {
|
|
*reply = "ptsmodule_connect() failed";
|
|
- return rc;
|
|
+ goto done;;
|
|
}
|
|
|
|
rc = ptsmodule_expand_tokens(ptsm->group_filter, canon_id+6, NULL, &filter);
|
|
@@ -1425,17 +1426,19 @@ static int ptsmodule_make_authstate_group(
|
|
|
|
if (rc != LDAP_SUCCESS) {
|
|
syslog(LOG_DEBUG, "(groups) Result from domain query not OK");
|
|
- return rc;
|
|
+ goto done;
|
|
} else {
|
|
syslog(LOG_DEBUG, "(groups) Result from domain query OK");
|
|
}
|
|
|
|
if (ldap_count_entries(ptsm->ld, res) < 1) {
|
|
syslog(LOG_ERR, "(groups) No domain %s found", domain);
|
|
- return PTSM_FAIL;
|
|
+ rc = PTSM_FAIL;
|
|
+ goto done;
|
|
} else if (ldap_count_entries(ptsm->ld, res) > 1) {
|
|
syslog(LOG_ERR, "(groups) Multiple domains %s found", domain);
|
|
- return PTSM_FAIL;
|
|
+ rc = PTSM_FAIL;
|
|
+ goto done;
|
|
} else {
|
|
syslog(LOG_DEBUG, "(groups) Domain %s found", domain);
|
|
if ((entry = ldap_first_entry(ptsm->ld, res)) != NULL) {
|
|
@@ -1452,7 +1455,7 @@ static int ptsmodule_make_authstate_group(
|
|
}
|
|
|
|
if (rc != PTSM_OK) {
|
|
- return rc;
|
|
+ goto done;
|
|
} else {
|
|
base = xstrdup(ptsm->group_base);
|
|
syslog(LOG_DEBUG, "Continuing with ptsm->group_base: %s", ptsm->group_base);
|
|
@@ -1462,7 +1465,7 @@ static int ptsmodule_make_authstate_group(
|
|
} else {
|
|
rc = ptsmodule_expand_tokens(ptsm->group_base, canon_id, NULL, &base);
|
|
if (rc != PTSM_OK)
|
|
- return rc;
|
|
+ goto done;
|
|
}
|
|
|
|
syslog(LOG_DEBUG, "(groups) about to search %s for %s", base, filter);
|