PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » Networking » Net_FTP » Bug #4969

Recursive rm ends in endless loop

Details

Submitted2005-08-02 12:03 UTC
Frompeople05 at sopic dot com
Assignedtoby
StatusClosed
PackageNet_FTP
PHP Version5.0.4
OSDebian GNU/Linux 3.1
Roadmaps(Not assigned)

Comments

[2005-08-02 12:03 UTC] people05 at sopic dot com

Description:
------------
Recursive rm ends in endless loop, 'cos FTP.php tries to
delete "." and "..". So when you like to delete /httpdocs/
demo/, the script tries do delete

/httpdocs/demo/./
/httpdocs/demo/././
/httpdocs/demo/./././
/httpdocs/demo/././././
/httpdocs/demo/./././././
/httpdocs/demo/././././././

and so on.

A possible patch can be found on http://www.sopic.com/test/
FTP.diff.

Test script:
---------------
<?php

require_once('Net/FTP.php');

$ftp = new NET_FTP('localhost', 21);
$ftp->connect();
$ftp->login('demo', 'password');
var_dump($ftp->mkdir('/httpdocs/demo/test/My test directory/', true));
var_dump($ftp->ls('/httpdocs'));
var_dump($ftp->rm('/httpdocs/demo/', true));
var_dump($ftp->ls('/httpdocs'));
$ftp->disconnect();

?>

Expected result:
----------------
true

array
0 =>
array
'name' => '.'
'size' => '4096'
'rights' => 'rwxr-x---'
'user' => 'demo'
'group' => 'psaserv'
'files_inside' => '4'
'date' => 'Aug 2 13:59'
'is_dir' => 'd'
'stamp' => 1122983940
1 =>
array
'name' => '..'
'size' => '4096'
'rights' => 'rwxr-xr-x'
'user' => 'root'
'group' => 'root'
'files_inside' => '5'
'date' => 'Jul 2 20:53'
'is_dir' => 'd'
'stamp' => 1120330380
2 =>
array
'name' => 'demo'
'size' => '4096'
'rights' => 'rwxr-xr-x'
'user' => 'demo'
'group' => 'psacln'
'files_inside' => '3'
'date' => 'Aug 2 13:59'
'is_dir' => 'd'
'stamp' => 1122983940
3 =>
array
'name' => 'index.php'
'size' => '579'
'rights' => 'rw-r--r--'
'user' => 'demo'
'group' => 'psacln'
'files_inside' => '1'
'date' => 'Jul 19 16:13'
'is_dir' => ''
'stamp' => 1121782380
true

array
0 =>
array
'name' => '.'
'size' => '4096'
'rights' => 'rwxr-x---'
'user' => 'demo'
'group' => 'psaserv'
'files_inside' => '3'
'date' => 'Aug 2 13:59'
'is_dir' => 'd'
'stamp' => 1122983940
1 =>
array
'name' => '..'
'size' => '4096'
'rights' => 'rwxr-xr-x'
'user' => 'root'
'group' => 'root'
'files_inside' => '5'
'date' => 'Jul 2 20:53'
'is_dir' => 'd'
'stamp' => 1120330380
2 =>
array
'name' => 'index.php'
'size' => '579'
'rights' => 'rw-r--r--'
'user' => 'demo'
'group' => 'psacln'
'files_inside' => '1'
'date' => 'Jul 19 16:13'
'is_dir' => ''
'stamp' => 1121782380

Actual result:
--------------
true