}
bail:
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
read = php_stream_read(fp, buf, size);
spprintf(error, 4096, "phar error: \"%s\" is a corrupted tar file (truncated)", fname);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
}
spprintf(error, 4096, "phar error: \"%s\" is a corrupted tar file (truncated)", fname);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
hdr = (tar_header*) buf;
}
pefree(entry.filename, myphar->is_persistent);
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
}
pefree(entry.filename, entry.is_persistent);
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, entry.is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
entry.link = estrdup(hdr->linkname);
spprintf(error, 4096, "phar error: tar-based phar \"%s\" has invalid metadata in magic file \"%s\"", fname, entry.filename);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
}
spprintf(error, 4096, "phar error: tar-based phar \"%s\" has alias that is larger than 511 bytes, cannot process", fname);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
read = php_stream_read(fp, buf, size);
spprintf(error, 4096, "phar error: invalid alias \"%s\" in tar-based phar \"%s\"", buf, fname);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
actual_alias = pestrndup(buf, size, myphar->is_persistent);
spprintf(error, 4096, "phar error: Unable to read alias from tar-based phar \"%s\"", fname);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
}
spprintf(error, 4096, "phar error: \"%s\" is a corrupted tar file (truncated)", fname);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
}
spprintf(error, 4096, "phar error: \"%s\" is a corrupted tar file (truncated)", fname);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
} while (read != 0);
/* ensure signature set */
if (PHAR_G(require_hash) && !myphar->signature) {
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
if (error) {
spprintf(error, 0, "tar-based phar \"%s\" does not have a signature", fname);
}
spprintf(error, 4096, "phar error: Unable to add tar-based phar \"%s\" to phar registry", fname);
}
php_stream_close(fp);
- zend_hash_destroy(&myphar->manifest);
- myphar->manifest.arBuckets = 0;
- zend_hash_destroy(&myphar->mounted_dirs);
- myphar->mounted_dirs.arBuckets = 0;
- zend_hash_destroy(&myphar->virtual_dirs);
- myphar->virtual_dirs.arBuckets = 0;
- pefree(myphar, myphar->is_persistent);
+ phar_destroy_phar_data(myphar TSRMLS_CC);
return FAILURE;
}
myphar = *actual;