|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-08-20 06:55 UTC] mk362 at mch dot osram dot de
Description: ------------ Hi, during upgrade of PEAR I noticed the following on my SuSE Linux 7.3: --- Release Warnings ================ w w downloading PEAR-1.2.tgz ... ...done: 83,109 bytes Warning: readlink() [http://www.php.net/function.readlink]: Invalid argument in Guess.php on line 181 upgrade-all ok: PEAR 1.2 --- This didn't happen in SuSE 8.2, but I think just because the program didn't come to that point. Looking into the code revealed that there is a readlink() call without error checking in line 181: --- if (ereg('^libc-([.*])\.so$', basename(readlink('/lib/libc.so.6')), --- and in case libc.so.6 is a regular file this will return FALSE instead of a string for basename() for both versions of my Linux. I guess one should implement proper error checking here. Possibly this was never tested anyway, because most systems might already circumvent the problem by getting $major and $minor a step earlier via the call of "/usr/bin/cpp". Marko Reproduce code: --------------- <?php error_reporting(0); require_once('OS/Guess.php'); if(readlink('/lib/libc.so.6') == FALSE) echo "Readlink call on /lib/libc.so.6 failed\n"; ?> Actual result: -------------- Content-type: text/html X-Powered-By: PHP/4.3.1 Readlink call on /lib/libc.so.6 failed PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 12:00:01 2025 UTC |
Hi, since there's no response up to now, I'd recommend to modify Guess.php:line 179 from --- if (!($major && $minor) && file_exists('/lib/libc.so.6')) --- to --- if (!($major && $minor) && is_link('/lib/libc.so.6')) --- to prevent that the program creates problems in case the lib is not symbolically linked. Marko