]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/result.c
Fix the 1.71 fix - only offset the length if the last character of the
[openldap] / servers / slapd / result.c
index 37faa5181ec71d941b3c11f99f28d5476276b3f8..bc8dc7aa6114f722f2aa0549c9e56176e899bdd2 100644 (file)
@@ -49,7 +49,9 @@ static char *v2ref( struct berval **ref, const char *text )
                v2 = ch_realloc( v2, len + ref[i]->bv_len + 1 );
                v2[len-1] = '\n';
                memcpy(&v2[len], ref[i]->bv_val, ref[i]->bv_len );
-               len += ref[i]->bv_len + 1;
+               len += ref[i]->bv_len;
+               if (ref[i]->bv_val[ref[i]->bv_len-1] != '/')
+                       ++len;
        }
 
        v2[len-1] = '\0';
@@ -241,7 +243,7 @@ send_ldap_response(
     const char *text,
        struct berval   **ref,
        const char      *resoid,
-       struct berval   *resdata,
+       struct berval   *data,
        LDAPControl **ctrls
 )
 {
@@ -281,9 +283,8 @@ send_ldap_response(
                        rc = ber_printf( ber, "s", resoid );
                }
 
-               if( rc != -1 && resdata != NULL ) {
-                       rc = ber_printf( ber, "O", resdata );
-
+               if( rc != -1 && data != NULL ) {
+                       rc = ber_printf( ber, "O", data );
                }
 
                if( rc != -1 ) {
@@ -868,7 +869,7 @@ send_search_reference(
 
        if( op->o_protocol < LDAP_VERSION3 ) {
                /* save the references for the result */
-               if( *refs == NULL ) {
+               if( *refs != NULL ) {
                        value_add( v2refs, refs );
                }
                return 0;