Package: phpldapadmin
Version: 1.2.2-5

Hi,

after last Debian dist-upgrade my phpldapadmin stopped to work.
There are two issues related to phpldapadmin + new python version.

The first one is, that lib/functions.php defines a function named 'password_hash',
but such function appears in PHP 5.5 which lead to name clash and error.
See: http://www.php.net/manual/en/function.password-hash.php


The second issue is related to the '/e' modifier of preg_replace, which is deprecated in PHP 5.5. See http://www.php.net/manual/en/function.preg-replace.php.

I attach a patch proposition.


--
Pawel Tomulik

diff -ur a/lib/ds_ldap.php b/lib/ds_ldap.php
--- a/lib/ds_ldap.php	2013-06-03 01:37:17.000000000 +0200
+++ b/lib/ds_ldap.php	2013-06-03 02:01:38.000000000 +0200
@@ -1117,12 +1117,14 @@
 		if (is_array($dn)) {
 			$a = array();
 			foreach ($dn as $key => $rdn)
-				$a[$key] = preg_replace('/\\\([0-9A-Fa-f]{2})/e',"''.chr(hexdec('\\1')).''",$rdn);
+				$a[$key] = preg_replace_callback('/\\\([0-9A-Fa-f]{2})/e',
+					function ($matches) { return chr(hexdec($matches[1])); }, $rdn);
 
 			return $a;
 
 		} else
-			return preg_replace('/\\\([0-9A-Fa-f]{2})/e',"''.chr(hexdec('\\1')).''",$dn);
+			return preg_replace_callback('/\\\([0-9A-Fa-f]{2})/e',
+					function ($matches) { return chr(hexdec($matches[1])); }, $dn);
 	}
 
 	public function getRootDSE($method=null) {
diff -ur a/lib/functions.php b/lib/functions.php
--- a/lib/functions.php	2013-06-03 01:30:25.000000000 +0200
+++ b/lib/functions.php	2013-06-03 02:01:12.000000000 +0200
@@ -2126,7 +2126,7 @@
  *        crypt, ext_des, md5crypt, blowfish, md5, sha, smd5, ssha, or clear.
  * @return string The hashed password.
  */
-function password_hash($password_clear,$enc_type) {
+function pla_password_hash($password_clear,$enc_type) {
 	if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
 		debug_log('Entered (%%)',1,0,__FILE__,__LINE__,__METHOD__,$fargs);
 
@@ -2307,7 +2307,7 @@
 
 		# SHA crypted passwords
 		case 'sha':
-			if (strcasecmp(password_hash($plainpassword,'sha'),'{SHA}'.$cryptedpassword) == 0)
+			if (strcasecmp(pla_password_hash($plainpassword,'sha'),'{SHA}'.$cryptedpassword) == 0)
 				return true;
 			else
 				return false;
@@ -2316,7 +2316,7 @@
 
 		# MD5 crypted passwords
 		case 'md5':
-			if( strcasecmp(password_hash($plainpassword,'md5'),'{MD5}'.$cryptedpassword) == 0)
+			if( strcasecmp(pla_password_hash($plainpassword,'md5'),'{MD5}'.$cryptedpassword) == 0)
 				return true;
 			else
 				return false;
@@ -2545,12 +2545,14 @@
 		$a = array();
 
 		foreach ($dn as $key => $rdn)
-			$a[$key] = preg_replace('/\\\([0-9A-Fa-f]{2})/e',"''.chr(hexdec('\\1')).''",$rdn);
+			$a[$key] = preg_replace_callback('/\\\([0-9A-Fa-f]{2})/', 
+				function ($matches) { return chr(hexdec($matches[1])); }, $rdn );
 
 		return $a;
 
 	} else {
-		return preg_replace('/\\\([0-9A-Fa-f]{2})/e',"''.chr(hexdec('\\1')).''",$dn);
+		return preg_replace_callback('/\\\([0-9A-Fa-f]{2})/',
+				function ($matches) { return chr(hexdec($matches[1])); }, $dn);
 	}
 }
 

Reply via email to