ID: 11675
User Update by: [EMAIL PROTECTED]
Status: Open
Bug Type: ZZiplib Related
Operating system: n/a
PHP Version: 4.0.6
Description: zzip_open() has a wrong arg count and doesn't validate arg2 correctly
Fix:
--- ../../php-4.0.6/ext/zziplib/zziplib.c Thu May 24 07:42:14 2001
+++ ext/zziplib/zziplib.c Mon Jun 25 14:31:59 2001
@@ -234,13 +234,13 @@
ZZIP_DIR *archive_p = NULL;
php_zzip_dirent *entry = NULL;
- if (ZEND_NUM_ARGS() != 2 ||
+ if (ZEND_NUM_ARGS() != 3 ||
zend_get_parameters_ex(3, &zzip_dp, &zzip_ent, &mode) == FAILURE) {
WRONG_PARAM_COUNT;
}
ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, zzip_dp, -1, "ZZIP Directory",
le_zzip_dir);
- ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, zzip_dp, -1, "ZZIP Entry",
le_zzip_entry);
+ ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, zzip_ent, -1, "ZZIP Entry",
+le_zzip_entry);
entry->fp = zzip_file_open(archive_p, entry->dirent.d_name,
O_RDONLY|O_BINARY);
After this is fixed, the correct usage seems to be:
<?php
$zzip = zzip_opendir("foo.zip");
if($zzip)
{
while ($zzip_entry = zzip_readdir($zzip))
{
echo "zzip_entry_name: " . zzip_entry_name($zzip_entry) . "\n";
echo "zzip_entry_filesize: " . zzip_entry_filesize($zzip_entry) . "\n";
if(zzip_open($zzip, $zzip_entry, "r"))
{
$buf = zzip_read($zzip_entry, zzip_entry_filesize($zzip_entry));
zzip_close($zzip_entry);
echo "read: " . strlen($buf) . " bytes\n";
}
}
zzip_closedir($zzip);
}
?>
Previous Comments:
---------------------------------------------------------------------------
[2001-06-25 16:09:44] [EMAIL PROTECTED]
See patch at: http://pfft.net/robin/pub/zzip.patch
Then, correct use seems to be:
$zzip = zzip_opendir("foo.zip");
if($zzip)
{
while ($zzip_entry = zzip_readdir($zzip))
{
echo "zzip_entry_name: " . zzip_entry_name($zzip_entry) . "n";
echo "zzip_entry_filesize: " . zzip_entry_filesize($zzip_entry) . "n";
if(zzip_open($zzip, $zzip_entry, "r"))
{
$buf = zzip_read($zzip_entry, zzip_entry_filesize($zzip_entry));
zzip_close($zzip_entry);
echo "read: " . strlen($buf) . " bytesn";
}
}
zzip_closedir($zzip);
}
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=11675
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]