1
0
mirror of https://github.com/php/php-src.git synced 2026-04-20 22:41:20 +02:00

remove invalid free if opening a phar file in plain_map fails

This commit is contained in:
Greg Beaver
2008-01-08 21:40:48 +00:00
parent 88bdd12803
commit 70ce6b77d0

View File

@@ -44,8 +44,8 @@ php_stream_wrapper_ops phar_stream_wops = {
"phar",
phar_wrapper_unlink, /* unlink */
phar_wrapper_rename, /* rename */
NULL, /* create directory */
NULL, /* remove directory */
phar_wrapper_mkdir, /* create directory */
phar_wrapper_rmdir, /* remove directory */
};
php_stream_wrapper php_stream_phar_wrapper = {
@@ -180,7 +180,6 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, char *pat
php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "phar error: file \"%s\" extracted from \"%s\" could not be opened", internal_file, resource->host);
}
php_url_free(resource);
efree(internal_file);
return fp;
}
@@ -448,13 +447,13 @@ static int phar_stream_flush(php_stream *stream TSRMLS_DC) /* {{{ */
* stat an opened phar file handle stream, used by phar_stat()
*/
void phar_dostat(phar_archive_data *phar, phar_entry_info *data, php_stream_statbuf *ssb,
zend_bool is_dir, char *alias, int alias_len TSRMLS_DC)
zend_bool is_temp_dir, char *alias, int alias_len TSRMLS_DC)
{
char *tmp;
int tmp_len;
memset(ssb, 0, sizeof(php_stream_statbuf));
if (!is_dir && !data->is_dir) {
if (!is_temp_dir && !data->is_dir) {
ssb->sb.st_size = data->uncompressed_filesize;
ssb->sb.st_mode = data->flags & PHAR_ENT_PERM_MASK;
ssb->sb.st_mode |= S_IFREG; /* regular file */
@@ -468,7 +467,7 @@ void phar_dostat(phar_archive_data *phar, phar_entry_info *data, php_stream_stat
ssb->sb.st_atime = data->timestamp;
ssb->sb.st_ctime = data->timestamp;
#endif
} else if (!is_dir && data->is_dir && (data->is_tar || data->is_zip)) {
} else if (!is_temp_dir && data->is_dir) {
ssb->sb.st_size = 0;
ssb->sb.st_mode = data->flags & PHAR_ENT_PERM_MASK;
ssb->sb.st_mode |= S_IFDIR; /* regular directory */