diff --git a/libraries/libldap/controls.c b/libraries/libldap/controls.c
index a5efc952dc352fa060b8ae8ed60fb6d0523c45d9..c84ac8847801e46dcf3510ff007b806aec5befe2 100644
--- a/libraries/libldap/controls.c
+++ b/libraries/libldap/controls.c
@@ -28,12 +28,13 @@
  * ldap_int_put_controls
  */
 
-int ldap_int_put_controls(
+int
+ldap_int_put_controls(
 	LDAP *ld,
-	LDAPControl **ctrls,
+	LDAPControl *const *ctrls,
 	BerElement *ber )
 {
-	LDAPControl **c;
+	LDAPControl *const *c;
 
 	assert( ld != NULL );
 	assert( ber != NULL );
@@ -261,7 +262,8 @@ ldap_controls_free( LDAPControl **controls )
 /*
  * Duplicate an array of LDAPControl
  */
-LDAPControl **ldap_controls_dup( LDAPControl **controls )
+LDAPControl **
+ldap_controls_dup( LDAPControl *const *controls )
 {
 	LDAPControl **new;
 	int i;
@@ -303,7 +305,8 @@ LDAPControl **ldap_controls_dup( LDAPControl **controls )
 /*
  * Duplicate a LDAPControl
  */
-LDAPControl *ldap_control_dup( LDAPControl *c )
+LDAPControl *
+ldap_control_dup( const LDAPControl *c )
 {
 	LDAPControl *new;
 
diff --git a/libraries/libldap/ldap-int.h b/libraries/libldap/ldap-int.h
index 3a26f42cabb04c27f95f5d3d1519787e0006ae36..d0ee82bfa83f922060db4cac520600a59b0a17f5 100644
--- a/libraries/libldap/ldap-int.h
+++ b/libraries/libldap/ldap-int.h
@@ -303,10 +303,10 @@ int ldap_check_cache LDAP_P(( LDAP *ld, ber_tag_t msgtype, BerElement *request )
  * in controls.c
  */
 LDAPControl *ldap_control_dup LDAP_P((
-	LDAPControl *ctrl ));
+	const LDAPControl *ctrl ));
 
 LDAPControl **ldap_controls_dup LDAP_P((
-	LDAPControl **ctrls ));
+	LDAPControl *const *ctrls ));
 
 int ldap_int_get_controls LDAP_P((
 	BerElement *be,
@@ -314,7 +314,7 @@ int ldap_int_get_controls LDAP_P((
 
 int ldap_int_put_controls LDAP_P((
 	LDAP *ld,
-	LDAPControl **ctrls,
+	LDAPControl *const *ctrls,
 	BerElement *ber ));
 
 /*