01421: crypt() deprecated, but still in pmwiki.php core
Description:
crypt() is deprecated.
Apache error log reports:
PHP Deprecated: crypt(): Supplied salt is not valid for DES. Possible bug in provided salt format. \
in /home/www/wikifarm/pmwiki/pmwiki.php on line 489
Associated pmwiki.php lines containing crypt(): 489 & 492
(:zcode 2.2.102:pmwiki.php@488..493:)
XES September 30, 2017, at 07:37 AM
It may want the salt changed/updated, because the only warnings I see for the error message are PHP 5.6.5+:
- 5.6.5
- When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.6 would incorrectly return a DES hash.
http://php.net/manual/en/function.crypt.php XES September 30, 2017, at 07:48 AM
Also possibly related hash_equals() for password matches PHP 5.6+. http://php.net/manual/en/function.hash-equals.php
I don't see any information that crypt() will become deprecated. Just PHP gets more and more inflexible about what can be passed as argument (like with htmlspecalchars, class declaration, preg_replace...). PmWiki for years relied on, and had documented or included, the use of because it was allowed and worked fine: you can never have an actual password hash that is "*" so this effectively locked the password until the administrator updates the script files. Same for a few page files where the attributes $DefaultPasswords['admin'] = '*';passwdread= and/or passwdedit= were set to "*" (Site.AuthUser, SiteAdmin.GroupAttributes). If you see that message then it is likely that some of your php scripts contain , or some of your farm or field $DefaultPasswords['something'] = '*';wikilib.d and/or wiki.d files contain passwdsomething=*. In all these cases replace the star * with @lock.
I've documented these over the years every time I had to update PmWiki, but unfortunately existing local scripts and page files need to be updated by the administrator. --Petko September 30, 2017, at 10:05 AM
Found, thank you: To document the fix: There was 1 line in an old wiki.d file in the offending wiki:
wiki.d/PmWiki.GroupAttributes:6:passwdattr=*
To find ran bash command:
egrep -rn 'passwd' wiki.d/*
Also may be helpful to document additional commands that can be run from the pmwiki directory to find similar issues:
egrep -rn 'DefaultPasswords' cookbook/* egrep -rn 'DefaultPasswords' local/* egrep -rn 'DefaultPasswords' pub/*
I'll close the issue. Thank you. Not sure why it threw a "Deprecated" notification.
XES October 01, 2017, at 12:48 PM