From f6b8103b789ae40234b0cb7574c1a9da4e5a1b21 Mon Sep 17 00:00:00 2001
From: Howard Chu <hyc@openldap.org>
Date: Thu, 29 Mar 2012 06:11:55 -0700
Subject: [PATCH] ITS#7149 more for back-perl, always use bv_len when available

---
 servers/slapd/back-perl/add.c     |  2 +-
 servers/slapd/back-perl/bind.c    |  2 +-
 servers/slapd/back-perl/compare.c | 13 +++++++------
 servers/slapd/back-perl/delete.c  |  2 +-
 servers/slapd/back-perl/modrdn.c  |  6 +++---
 servers/slapd/back-perl/search.c  |  6 +++---
 6 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/servers/slapd/back-perl/add.c b/servers/slapd/back-perl/add.c
index 2fb9b9e00d..0df962b422 100644
--- a/servers/slapd/back-perl/add.c
+++ b/servers/slapd/back-perl/add.c
@@ -35,7 +35,7 @@ perl_back_add(
 
 		PUSHMARK(sp);
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( entry2str( op->ora_e, &len ), 0 )));
+		XPUSHs(sv_2mortal(newSVpv( entry2str( op->ora_e, &len ), len )));
 
 		PUTBACK;
 
diff --git a/servers/slapd/back-perl/bind.c b/servers/slapd/back-perl/bind.c
index 5b6c8e7d88..192b403fd5 100644
--- a/servers/slapd/back-perl/bind.c
+++ b/servers/slapd/back-perl/bind.c
@@ -50,7 +50,7 @@ perl_back_bind(
 
 		PUSHMARK(SP);
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0)));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len)));
 		XPUSHs(sv_2mortal(newSVpv( op->orb_cred.bv_val , op->orb_cred.bv_len)));
 		PUTBACK;
 
diff --git a/servers/slapd/back-perl/compare.c b/servers/slapd/back-perl/compare.c
index 0bd3dd6dfa..7cb561401d 100644
--- a/servers/slapd/back-perl/compare.c
+++ b/servers/slapd/back-perl/compare.c
@@ -29,14 +29,15 @@ perl_back_compare(
 	Operation	*op,
 	SlapReply	*rs )
 {
-	int count;
+	int count, avalen;
 	char *avastr;
 
 	PerlBackend *perl_back = (PerlBackend *)op->o_bd->be_private;
 
-	avastr = ch_malloc( op->orc_ava->aa_desc->ad_cname.bv_len + 1 +
-		op->orc_ava->aa_value.bv_len + 1 );
-	
+	avalen = op->orc_ava->aa_desc->ad_cname.bv_len + 1 +
+		op->orc_ava->aa_value.bv_len;
+	avastr = ch_malloc( avalen + 1 );
+
 	lutil_strcopy( lutil_strcopy( lutil_strcopy( avastr,
 		op->orc_ava->aa_desc->ad_cname.bv_val ), "=" ),
 		op->orc_ava->aa_value.bv_val );
@@ -49,8 +50,8 @@ perl_back_compare(
 
 		PUSHMARK(sp);
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0)));
-		XPUSHs(sv_2mortal(newSVpv( avastr , 0)));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len)));
+		XPUSHs(sv_2mortal(newSVpv( avastr , avalen)));
 		PUTBACK;
 
 		count = call_method("compare", G_SCALAR);
diff --git a/servers/slapd/back-perl/delete.c b/servers/slapd/back-perl/delete.c
index 80c9607480..f72a540697 100644
--- a/servers/slapd/back-perl/delete.c
+++ b/servers/slapd/back-perl/delete.c
@@ -33,7 +33,7 @@ perl_back_delete(
 
 		PUSHMARK(sp);
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0 )));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len )));
 
 		PUTBACK;
 
diff --git a/servers/slapd/back-perl/modrdn.c b/servers/slapd/back-perl/modrdn.c
index 31ff2001d5..dcfb080c46 100644
--- a/servers/slapd/back-perl/modrdn.c
+++ b/servers/slapd/back-perl/modrdn.c
@@ -33,11 +33,11 @@ perl_back_modrdn(
 		
 		PUSHMARK(sp) ;
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0 )));
-		XPUSHs(sv_2mortal(newSVpv( op->orr_newrdn.bv_val , 0 )));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len )));
+		XPUSHs(sv_2mortal(newSVpv( op->orr_newrdn.bv_val , op->orr_newrdn.bv_len )));
 		XPUSHs(sv_2mortal(newSViv( op->orr_deleteoldrdn )));
 		if ( op->orr_newSup != NULL ) {
-			XPUSHs(sv_2mortal(newSVpv( op->orr_newSup->bv_val , 0 )));
+			XPUSHs(sv_2mortal(newSVpv( op->orr_newSup->bv_val , op->orr_newSup->bv_len )));
 		}
 		PUTBACK ;
 
diff --git a/servers/slapd/back-perl/search.c b/servers/slapd/back-perl/search.c
index c7428010f8..220e89c779 100644
--- a/servers/slapd/back-perl/search.c
+++ b/servers/slapd/back-perl/search.c
@@ -42,16 +42,16 @@ perl_back_search(
 
 		PUSHMARK(sp) ;
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_ndn.bv_val , 0)));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_ndn.bv_val , op->o_req_ndn.bv_len)));
 		XPUSHs(sv_2mortal(newSViv( op->ors_scope )));
 		XPUSHs(sv_2mortal(newSViv( op->ors_deref )));
 		XPUSHs(sv_2mortal(newSViv( op->ors_slimit )));
 		XPUSHs(sv_2mortal(newSViv( op->ors_tlimit )));
-		XPUSHs(sv_2mortal(newSVpv( op->ors_filterstr.bv_val , 0)));
+		XPUSHs(sv_2mortal(newSVpv( op->ors_filterstr.bv_val , op->ors_filterstr.bv_len)));
 		XPUSHs(sv_2mortal(newSViv( op->ors_attrsonly )));
 
 		for ( an = op->ors_attrs; an && an->an_name.bv_val; an++ ) {
-			XPUSHs(sv_2mortal(newSVpv( an->an_name.bv_val , 0)));
+			XPUSHs(sv_2mortal(newSVpv( an->an_name.bv_val , an->an_name.bv_len)));
 		}
 		PUTBACK;
 
-- 
GitLab