Wednesday, June 18, 2014

[389-commits] Branch '389-ds-base-1.3.2' - ldap/servers

ldap/servers/slapd/back-ldbm/ldbm_add.c | 6 ++++--
ldap/servers/slapd/back-ldbm/ldbm_delete.c | 3 ++-
ldap/servers/slapd/back-ldbm/ldbm_modify.c | 1 +
ldap/servers/slapd/back-ldbm/ldbm_modrdn.c | 1 +
4 files changed, 8 insertions(+), 3 deletions(-)

New commits:
commit dd51540a4915857a6d9beb55b44ad2b7d4bb8cac
Author: Mark Reynolds <mreynolds@redhat.com>
Date: Tue Jun 17 17:58:54 2014 -0400

Ticket 47817 - The error result text message should be obtained just prior to sending result

Bug Description: We do not get pblock result message after the betxn postop plugins
are called. If a betxn plugin modified the ldap result message, then
when the backend returns the results it does an invalid read on the
old pointer of the old result message.

Fix Description: Get the result message after we call the betxn postop plugins.

https://fedorahosted.org/389/ticket/47817

jenkins: passed

Reviewed by: nhosoi(Thanks!)

(cherry picked from commit 68e766891d1067b2b86bd48bfa16d0837fa5a737)

diff --git a/ldap/servers/slapd/back-ldbm/ldbm_add.c b/ldap/servers/slapd/back-ldbm/ldbm_add.c
index 0dcb158..0a7d006 100644
--- a/ldap/servers/slapd/back-ldbm/ldbm_add.c
+++ b/ldap/servers/slapd/back-ldbm/ldbm_add.c
@@ -94,8 +94,8 @@ ldbm_back_add( Slapi_PBlock *pb )
char *msg;
int managedsait;
int ldap_result_code = LDAP_SUCCESS;
- char *ldap_result_message= NULL;
- char *ldap_result_matcheddn= NULL;
+ char *ldap_result_message = NULL;
+ char *ldap_result_matcheddn = NULL;
int retry_count = 0;
int disk_full = 0;
modify_context parent_modify_c = {0};
@@ -1225,6 +1225,8 @@ diskfull_return:
/* tell frontend not to free this entry */
slapi_pblock_set(pb, SLAPI_ADD_ENTRY, NULL);
}
+
+ slapi_pblock_get(pb, SLAPI_PB_RESULT_TEXT, &ldap_result_message);
}

/* Release SERIAL LOCK */
diff --git a/ldap/servers/slapd/back-ldbm/ldbm_delete.c b/ldap/servers/slapd/back-ldbm/ldbm_delete.c
index 915ea08..39fe706 100644
--- a/ldap/servers/slapd/back-ldbm/ldbm_delete.c
+++ b/ldap/servers/slapd/back-ldbm/ldbm_delete.c
@@ -75,7 +75,7 @@ ldbm_back_delete( Slapi_PBlock *pb )
modify_context ruv_c = {0};
int rc = 0;
int ldap_result_code= LDAP_SUCCESS;
- char *ldap_result_message= NULL;
+ char *ldap_result_message = NULL;
Slapi_DN *sdnp = NULL;
char *e_uniqueid = NULL;
Slapi_DN nscpEntrySDN;
@@ -1331,6 +1331,7 @@ error_return:
if (!opreturn) {
slapi_pblock_set( pb, SLAPI_PLUGIN_OPRETURN, ldap_result_code ? &ldap_result_code : &retval );
}
+ slapi_pblock_get(pb, SLAPI_PB_RESULT_TEXT, &ldap_result_message);
}

/* Release SERIAL LOCK */
diff --git a/ldap/servers/slapd/back-ldbm/ldbm_modify.c b/ldap/servers/slapd/back-ldbm/ldbm_modify.c
index d2dc983..8791b45 100644
--- a/ldap/servers/slapd/back-ldbm/ldbm_modify.c
+++ b/ldap/servers/slapd/back-ldbm/ldbm_modify.c
@@ -901,6 +901,7 @@ error_return:
LDAPDebug1Arg( LDAP_DEBUG_TRACE, "SLAPI_PLUGIN_BE_TXN_POST_MODIFY_FN plugin "
"returned error code %d\n", retval );
slapi_pblock_get(pb, SLAPI_RESULT_CODE, &ldap_result_code);
+ slapi_pblock_get(pb, SLAPI_PB_RESULT_TEXT, &ldap_result_message);
slapi_pblock_get(pb, SLAPI_PLUGIN_OPRETURN, &opreturn);
if (!opreturn) {
slapi_pblock_set(pb, SLAPI_PLUGIN_OPRETURN, ldap_result_code ? &ldap_result_code : &retval);
diff --git a/ldap/servers/slapd/back-ldbm/ldbm_modrdn.c b/ldap/servers/slapd/back-ldbm/ldbm_modrdn.c
index 71056bb..57590cb 100644
--- a/ldap/servers/slapd/back-ldbm/ldbm_modrdn.c
+++ b/ldap/servers/slapd/back-ldbm/ldbm_modrdn.c
@@ -1397,6 +1397,7 @@ error_return:
if (!opreturn) {
slapi_pblock_set( pb, SLAPI_PLUGIN_OPRETURN, ldap_result_code ? &ldap_result_code : &retval );
}
+ slapi_pblock_get(pb, SLAPI_PB_RESULT_TEXT, &ldap_result_message);
}

/* Release SERIAL LOCK */


--
389 commits mailing list
389-commits@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/389-commits

No comments:

Post a Comment