ID: 14554 Updated by: derick Reported By: [EMAIL PROTECTED] Old Status: Open Status: Closed Bug Type: ZZiplib Related Operating System: linux PHP Version: 4.1.0 New Comment:
Applied the patch. Thx ! Derick Previous Comments: ------------------------------------------------------------------------ [2001-12-22 18:52:20] [EMAIL PROTECTED] Also sent to [EMAIL PROTECTED] > cvs diff -u cvs server: Diffing . Index: zip.c =================================================================== RCS file: /repository/php4/ext/zip/zip.c,v retrieving revision 1.27 diff -u -r1.27 zip.c --- zip.c 11 Dec 2001 15:30:57 -0000 1.27 +++ zip.c 22 Dec 2001 23:47:17 -0000 @@ -250,9 +250,10 @@ zval *zzip_ent; ZZIP_DIR *archive_p = NULL; php_zzip_dirent *entry = NULL; - int mode; + char *mode; + int mode_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|l", &zzip_dp, &zzip_ent, &mode) == FAILURE) + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|s", &zzip_dp, +&zzip_ent, &mode, &mode_len) == FAILURE) return; ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, &zzip_dp, -1, le_zip_dir_name, le_zip_dir); ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, le_zip_entry_name, le_zip_entry); ------------------------------------------------------------------------ [2001-12-22 15:44:27] [EMAIL PROTECTED] Can you send a new patch which fixes that zip_entry_open thingy to Derick? He'll handle it. ------------------------------------------------------------------------ [2001-12-17 10:31:51] [EMAIL PROTECTED] It seems to be fixed in the current CVS tree (except for the third argument to zip_entry_open(), which is optional). ------------------------------------------------------------------------ [2001-12-17 02:44:40] [EMAIL PROTECTED] Can you send the patch to me by mail? The bugform screwed it up a little (and please make a patch against the current CVS version). Regards, Derick ------------------------------------------------------------------------ [2001-12-16 20:48:31] [EMAIL PROTECTED] ext/zip/zip.c crashes on the first zip_read(). The fix is at http://pfft.net/robin/pub/zip.4.1.0.patch and I'm including it below. diff -ru php-4.1.0/ext/zip/zip.c php-4.1.0-new/ext/zip/zip.c --- php-4.1.0/ext/zip/zip.c Fri Oct 19 03:04:24 2001 +++ php-4.1.0-new/ext/zip/zip.c Sun Dec 16 19:26:20 2001 @@ -142,7 +142,7 @@ Returns the next file in the archive */ PHP_FUNCTION(zip_read) { - zval **zzip_dp; + zval *zzip_dp; ZZIP_DIR *archive_p = NULL; php_zzip_dirent *entry = NULL; int @@ -186,14 +186,14 @@ */ static void php_zzip_get_entry(INTERNAL_FUNCTION_PARAMETERS, int opt) { - zval **zzip_ent; + zval *zzip_ent; php_zzip_dirent *entry = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zzip_ent) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, zzip_ent, -1, le_zip_entry_name, le_zip_entry); + ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, le_zip_entry_name, +le_zip_entry); switch (opt) { case 0: @@ -248,17 +248,18 @@ Open a Zip File, pointed by the resource entry */ PHP_FUNCTION(zip_entry_open) { - zval **zzip_dp; - zval **zzip_ent; + zval *zzip_dp; + zval *zzip_ent; ZZIP_DIR *archive_p = NULL; php_zzip_dirent *entry = NULL; - int mode; + char *mode; + int mode_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|l", &zzip_dp, &zzip_ent, &mode) == FAILURE) + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|s", &zzip_dp, &zzip_ent, +&mode, &mode_len) == FAILURE) return; - ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, zzip_dp, -1, le_zip_dir_name, le_zip_dir); - ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, zzip_ent, -1, le_zip_entry_name, le_zip_entry); + ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, &zzip_dp, -1, le_zip_dir_name, + le_zip_dir); + ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, +le_zip_entry_name, le_zip_entry); entry->fp = zzip_file_open(archive_p, entry->dirent.d_name, O_RDONLY | O_BINARY); ret@@ -274,7 +275,7 @@ Read X bytes from an opened zip entry */ PHP_FUNCTION(zip_entry_read) { - zval **zzip_ent; + zval *zzip_ent; php_zzip_dirent *entry = NULL; char *buf = NULL; int len = 1024; @@ -284,7 +285,7 @@ return; } - ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, zzip_ent, -1, le_zip_entry_name, le_zip_entry); + ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, le_zip_entry_name, +le_zip_entry); buf = emalloc(len + 1); ret = zzip_read(entry->fp, buf, len); @@ -300,16 +301,16 @@ Close a zip entry */ PHP_FUNCTION(zip_entry_close) { - zval **zzip_ent; + zval *zzip_ent; php_zzip_dirent *entry = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zzip_ent) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, zzip_ent, -1, le_zip_entry_name, le_zip_entry); + ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, le_zip_entry_name, +le_zip_entry); - zend_list_delete(Z_LVAL_PP(zzip_ent)); + zend_list_delete(Z_LVAL_PP(&zzip_ent)); } /* }}} */ ; @@ -151,7 +151,7 @@ return; } - ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, zzip_dp, -1, le_zip_dir_name, le_zip_dir); + ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, &zzip_dp, -1, le_zip_dir_name, +le_zip_dir); entry = emalloc(sizeof(php_zzip_dirent)); ret = zzip_dir_read(archive_p, &entry->dirent); @@ -169,16 +169,16 @@ Close a Zip archive */ PHP_FUNCTION(zip_close) { - zval **zzip_dp; + zval *zzip_dp; ZZIP_DIR *archive_p = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zzip_dp) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, zzip_dp, -1, le_zip_dir_name, le_zip_dir); + ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, &zzip_dp, -1, le_zip_dir_name, +le_zip_dir); - zend_list_delete(Z_LVAL_PP(zzip_dp)); + zend_list_delete(Z_LVAL_PP(&zzip_dp)); } /* }}} */ ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=14554&edit=1 -- 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]