]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slapi/slapi_pblock.c
Do not return pointers into BerElement we do not own
[openldap] / servers / slapd / slapi / slapi_pblock.c
index 2df1f3bd4ecd8c0e7a9f9536662e128992481c97..3441eb45923733c3987f0bc85115a64d054510b0 100644 (file)
@@ -11,7 +11,6 @@
  */
 
 #include "portable.h"
-#include "slapi_common.h"
 #include <slap.h>
 #include <slapi.h>
 
@@ -22,6 +21,10 @@ isOkNetscapeParam( int param )
        case SLAPI_BACKEND:
        case SLAPI_CONNECTION:
        case SLAPI_OPERATION:
+       case SLAPI_OPERATION_PARAMETERS:
+       case SLAPI_OPERATION_TYPE:
+       case SLAPI_OPERATION_ID:
+       case SLAPI_OPERATION_AUTHTYPE:
        case SLAPI_REQUESTOR_ISROOT:
        case SLAPI_BE_MONITORDN:
        case SLAPI_BE_TYPE:
@@ -32,7 +35,14 @@ isOkNetscapeParam( int param )
        case SLAPI_REQUESTOR_DN:
        case SLAPI_REQUESTOR_ISUPDATEDN:
        case SLAPI_CONN_DN:
+       case SLAPI_CONN_CLIENTIP:
+       case SLAPI_CONN_SERVERIP:
        case SLAPI_CONN_AUTHTYPE:
+       case SLAPI_CONN_AUTHMETHOD:
+       case SLAPI_CONN_CERT:
+       case SLAPI_X_CONN_IS_UDP:
+       case SLAPI_X_CONN_CLIENTPATH:
+       case SLAPI_X_CONN_SERVERPATH:
        case SLAPI_IBM_CONN_DN_ALT:
        case SLAPI_IBM_CONN_DN_ORIG:
        case SLAPI_IBM_GSSAPI_CONTEXT:
@@ -185,6 +195,11 @@ isOkNetscapeParam( int param )
        case SLAPI_CHANGENUMBER:
        case SLAPI_LOG_OPERATION:
        case SLAPI_DBSIZE:
+       case SLAPI_RESULT_CODE:
+       case SLAPI_RESULT_TEXT:
+       case SLAPI_RESULT_MATCHED:
+       case SLAPI_PLUGIN_COMPUTE_EVALUATOR_FN:
+       case SLAPI_PLUGIN_COMPUTE_SEARCH_REWRITER_FN:
                return LDAP_SUCCESS;
        default:
                return INVALID_PARAM;
@@ -257,7 +272,7 @@ set( Slapi_PBlock *pb, int param, void *val )
 
        Lock( pb );     
 
-       if ( pb->numParams == MAX_PARAMS ) {
+       if ( pb->numParams == PBLOCK_MAX_PARAMS ) {
                unLock( pb );
                return PBLOCK_ERROR; 
        }
@@ -350,7 +365,7 @@ slapi_pblock_destroy( Slapi_PBlock* pb )
                str = NULL;
        }
 
-       get( pb, SLAPI_CONN_AUTHTYPE, (void **)&str );
+       get( pb, SLAPI_CONN_AUTHMETHOD, (void **)&str );
        if ( str != NULL ) {
                ch_free( str );
                str = NULL;
@@ -367,6 +382,18 @@ slapi_pblock_destroy( Slapi_PBlock* pb )
                ch_free( str );
        }
 
+       get( pb, SLAPI_RESULT_TEXT, (void **)&str );
+       if ( str != NULL ) {
+               ch_free( str );
+               str = NULL;
+       }
+
+       get( pb, SLAPI_RESULT_MATCHED, (void **)&str );
+       if ( str != NULL ) {
+               ch_free( str );
+               str = NULL;
+       }
+
        ldap_pvt_thread_mutex_destroy( &pb->pblockMutex );
 
        ch_free( pb ); 
@@ -390,9 +417,11 @@ slapi_pblock_set( Slapi_PBlock *pb, int arg, void *value )
 
        switch ( arg ) {
         case SLAPI_CONN_DN:
-        case SLAPI_CONN_AUTHTYPE:
+        case SLAPI_CONN_AUTHMETHOD:
         case SLAPI_IBM_CONN_DN_ALT:
         case SLAPI_IBM_CONN_DN_ORIG:
+        case SLAPI_RESULT_TEXT:
+        case SLAPI_RESULT_MATCHED:
                if ( value != NULL ) {
                        pTmp = (void *)slapi_ch_strdup((char *)value);
                        if ( pTmp == NULL ) {