#25174 [Asn]: Wrong handling of readlink() in OS/Guess.php

From: Date: Sun, 24 Aug 2003 15:13:06 +0000
Subject: #25174 [Asn]: Wrong handling of readlink() in OS/Guess.php
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-20455@lists.php.net to get a copy of this message
ID: 25174 Updated by: nohn@php.net Reported By: mk362 at mch dot osram dot de Status: Assigned Bug Type: PEAR related -Operating System: SuSE Linux 8.2 and 7.3 +Operating System: SuSE Linux 8.2, 7.3, 7.2 -PHP Version: 4.3.1 +PHP Version: 4.3.2 Assigned To: cellog New Comment: verified on suse 7.2, php 4.3.2 downloading PEAR-1.2.1.tgz ... ...done: 83,126 bytes Notice: Undefined offset: 1 in Guess.php on line 173 Warning: readlink(): Invalid argument in Guess.php on line 181 upgrade-all ok: PEAR 1.2.1 Previous Comments: ------------------------------------------------------------------------ [2003-08-20 06:55:18] 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 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=25174&edit=1

« previous php.pear.dev (#20455) next »