Browse Source

basic fixes for ext/phar

pull/536/merge
Anatol Belski 12 years ago
parent
commit
ef52220617
  1. 34
      ext/phar/dirstream.c
  2. 2
      ext/phar/dirstream.h
  3. 76
      ext/phar/func_interceptors.c
  4. 74
      ext/phar/phar.c
  5. 100
      ext/phar/phar_internal.h
  6. 260
      ext/phar/phar_object.c
  7. 2
      ext/phar/phar_path_check.c
  8. 2
      ext/phar/php_phar.h
  9. 34
      ext/phar/stream.c
  10. 2
      ext/phar/stream.h
  11. 2
      ext/phar/stub.h
  12. 21
      ext/phar/tar.c
  13. 100
      ext/phar/util.c
  14. 22
      ext/phar/zip.c

34
ext/phar/dirstream.c

@ -58,7 +58,7 @@ static int phar_dir_close(php_stream *stream, int close_handle TSRMLS_DC) /* {{
/**
* Used for seeking on a phar directory handle
*/
static int phar_dir_seek(php_stream *stream, off_t offset, int whence, off_t *newoffset TSRMLS_DC) /* {{{ */
static int phar_dir_seek(php_stream *stream, zend_off_t offset, int whence, zend_off_t *newoffset TSRMLS_DC) /* {{{ */
{
HashTable *data = (HashTable *)stream->abstract;
@ -95,8 +95,8 @@ static size_t phar_dir_read(php_stream *stream, char *buf, size_t count TSRMLS_D
size_t to_read;
HashTable *data = (HashTable *)stream->abstract;
char *str_key;
uint keylen;
ulong unused;
zend_str_size_uint keylen;
php_uint_t unused;
if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(data, &str_key, &keylen, &unused, 0, NULL)) {
return 0;
@ -141,7 +141,7 @@ static int phar_dir_flush(php_stream *stream TSRMLS_DC) /* {{{ */
* This is used to get a unique listing of virtual directories within a phar,
* for iterating over opendir()ed phar directories.
*/
static int phar_add_empty(HashTable *ht, char *arKey, uint nKeyLength) /* {{{ */
static int phar_add_empty(HashTable *ht, char *arKey, zend_str_size_uint nKeyLength) /* {{{ */
{
void *dummy = (char *) 1;
@ -180,10 +180,10 @@ static int phar_compare_dir_name(const void *a, const void *b TSRMLS_DC) /* {{{
static php_stream *phar_make_dirstream(char *dir, HashTable *manifest TSRMLS_DC) /* {{{ */
{
HashTable *data;
int dirlen = strlen(dir);
zend_str_size_int dirlen = strlen(dir);
char *entry, *found, *save, *str_key;
uint keylen;
ulong unused;
zend_str_size_uint keylen;
php_uint_t unused;
ALLOC_HASHTABLE(data);
zend_hash_init(data, 64, NULL, NULL, 0);
@ -303,8 +303,8 @@ php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path,
php_url *resource = NULL;
php_stream *ret;
char *internal_file, *error, *str_key;
uint keylen;
ulong unused;
zend_str_size_uint keylen;
php_uint_t unused;
phar_archive_data *phar;
phar_entry_info *entry = NULL;
uint host_len;
@ -376,7 +376,7 @@ php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path,
php_url_free(resource);
return phar_make_dirstream(internal_file, &phar->manifest TSRMLS_CC);
} else {
int i_len = strlen(internal_file);
zend_str_size_int i_len = strlen(internal_file);
/* search for directory */
zend_hash_internal_pointer_reset(&phar->manifest);
@ -412,9 +412,9 @@ int phar_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url_from, int mo
phar_entry_info entry, *e;
phar_archive_data *phar = NULL;
char *error, *arch, *entry2;
int arch_len, entry_len;
zend_str_size_int arch_len, entry_len;
php_url *resource = NULL;
uint host_len;
zend_str_size_uint host_len;
/* pre-readonly check, we need to know if this is a data phar */
if (FAILURE == phar_split_fname(url_from, strlen(url_from), &arch, &arch_len, &entry2, &entry_len, 2, 2 TSRMLS_CC)) {
@ -544,13 +544,13 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options
phar_entry_info *entry;
phar_archive_data *phar = NULL;
char *error, *arch, *entry2;
int arch_len, entry_len;
zend_str_size_int arch_len, entry_len;
php_url *resource = NULL;
uint host_len;
zend_str_size_uint host_len;
char *str_key;
uint key_len;
ulong unused;
uint path_len;
zend_str_size_uint key_len;
php_uint_t unused;
zend_str_size_uint path_len;
/* pre-readonly check, we need to know if this is a data phar */
if (FAILURE == phar_split_fname(url, strlen(url), &arch, &arch_len, &entry2, &entry_len, 2, 2 TSRMLS_CC)) {

2
ext/phar/dirstream.h

@ -31,7 +31,7 @@ static size_t phar_dir_write(php_stream *stream, const char *buf, size_t count T
static size_t phar_dir_read( php_stream *stream, char *buf, size_t count TSRMLS_DC);
static int phar_dir_close(php_stream *stream, int close_handle TSRMLS_DC);
static int phar_dir_flush(php_stream *stream TSRMLS_DC);
static int phar_dir_seek( php_stream *stream, off_t offset, int whence, off_t *newoffset TSRMLS_DC);
static int phar_dir_seek( php_stream *stream, zend_off_t offset, int whence, zend_off_t *newoffset TSRMLS_DC);
#else
php_stream* phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC);
#endif

76
ext/phar/func_interceptors.c

@ -26,7 +26,7 @@
PHAR_FUNC(phar_opendir) /* {{{ */
{
char *filename;
int filename_len;
zend_str_size_int filename_len;
zval *zcontext = NULL;
if (!PHAR_G(intercepted)) {
@ -38,13 +38,13 @@ PHAR_FUNC(phar_opendir) /* {{{ */
goto skip_phar;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|z", &filename, &filename_len, &zcontext) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "P|z", &filename, &filename_len, &zcontext) == FAILURE) {
return;
}
if (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://")) {
char *arch, *entry, *fname;
int arch_len, entry_len, fname_len;
zend_str_size_int arch_len, entry_len, fname_len;
fname = (char*)zend_get_executed_filename(TSRMLS_C);
/* we are checking for existence of a file within the relative path. Chances are good that this is
@ -94,13 +94,13 @@ skip_phar:
PHAR_FUNC(phar_file_get_contents) /* {{{ */
{
char *filename;
int filename_len;
zend_str_size_int filename_len;
char *contents;
zend_bool use_include_path = 0;
php_stream *stream;
int len;
long offset = -1;
long maxlen = PHP_STREAM_COPY_ALL;
zend_str_size_int len;
php_int_t offset = -1;
php_int_t maxlen = PHP_STREAM_COPY_ALL;
zval *zcontext = NULL;
if (!PHAR_G(intercepted)) {
@ -113,13 +113,13 @@ PHAR_FUNC(phar_file_get_contents) /* {{{ */
}
/* Parse arguments */
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "p|br!ll", &filename, &filename_len, &use_include_path, &zcontext, &offset, &maxlen) == FAILURE) {
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "P|br!ii", &filename, &filename_len, &use_include_path, &zcontext, &offset, &maxlen) == FAILURE) {
goto skip_phar;
}
if (use_include_path || (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://"))) {
char *arch, *entry, *fname;
int arch_len, entry_len, fname_len;
zend_str_size_int arch_len, entry_len, fname_len;
php_stream_context *context = NULL;
fname = (char*)zend_get_executed_filename(TSRMLS_C);
@ -230,7 +230,7 @@ skip_phar:
PHAR_FUNC(phar_readfile) /* {{{ */
{
char *filename;
int filename_len;
zend_str_size_int filename_len;
int size = 0;
zend_bool use_include_path = 0;
zval *zcontext = NULL;
@ -244,12 +244,12 @@ PHAR_FUNC(phar_readfile) /* {{{ */
&& !cached_phars.arBuckets) {
goto skip_phar;
}
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "p|br!", &filename, &filename_len, &use_include_path, &zcontext) == FAILURE) {
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "P|br!", &filename, &filename_len, &use_include_path, &zcontext) == FAILURE) {
goto skip_phar;
}
if (use_include_path || (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://"))) {
char *arch, *entry, *fname;
int arch_len, entry_len, fname_len;
zend_str_size_int arch_len, entry_len, fname_len;
php_stream_context *context = NULL;
char *name;
phar_archive_data *phar;
@ -326,7 +326,7 @@ skip_phar:
PHAR_FUNC(phar_fopen) /* {{{ */
{
char *filename, *mode;
int filename_len, mode_len;
zend_str_size_int filename_len, mode_len;
zend_bool use_include_path = 0;
zval *zcontext = NULL;
php_stream *stream;
@ -340,12 +340,12 @@ PHAR_FUNC(phar_fopen) /* {{{ */
/* no need to check, include_path not even specified in fopen/ no active phars */
goto skip_phar;
}
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "ps|br", &filename, &filename_len, &mode, &mode_len, &use_include_path, &zcontext) == FAILURE) {
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "PS|br", &filename, &filename_len, &mode, &mode_len, &use_include_path, &zcontext) == FAILURE) {
goto skip_phar;
}
if (use_include_path || (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://"))) {
char *arch, *entry, *fname;
int arch_len, entry_len, fname_len;
zend_str_size_int arch_len, entry_len, fname_len;
php_stream_context *context = NULL;
char *name;
phar_archive_data *phar;
@ -439,7 +439,7 @@ skip_phar:
/* {{{ php_stat
*/
static void phar_fancy_stat(struct stat *stat_sb, int type, zval *return_value TSRMLS_DC)
static void phar_fancy_stat(php_stat_t *stat_sb, int type, zval *return_value TSRMLS_DC)
{
zval *stat_dev, *stat_ino, *stat_mode, *stat_nlink, *stat_uid, *stat_gid, *stat_rdev,
*stat_size, *stat_atime, *stat_mtime, *stat_ctime, *stat_blksize, *stat_blocks;
@ -483,32 +483,32 @@ static void phar_fancy_stat(struct stat *stat_sb, int type, zval *return_value T
switch (type) {
case FS_PERMS:
RETURN_LONG((long)stat_sb->st_mode);
RETURN_LONG((php_int_t)stat_sb->st_mode);
case FS_INODE:
RETURN_LONG((long)stat_sb->st_ino);
RETURN_LONG((php_int_t)stat_sb->st_ino);
case FS_SIZE:
RETURN_LONG((long)stat_sb->st_size);
RETURN_LONG((php_int_t)stat_sb->st_size);
case FS_OWNER:
RETURN_LONG((long)stat_sb->st_uid);
RETURN_LONG((php_int_t)stat_sb->st_uid);
case FS_GROUP:
RETURN_LONG((long)stat_sb->st_gid);
RETURN_LONG((php_int_t)stat_sb->st_gid);
case FS_ATIME:
#ifdef NETWARE
RETURN_LONG((long)stat_sb->st_atime.tv_sec);
RETURN_LONG((php_int_t)stat_sb->st_atime.tv_sec);
#else
RETURN_LONG((long)stat_sb->st_atime);
RETURN_LONG((php_int_t)stat_sb->st_atime);
#endif
case FS_MTIME:
#ifdef NETWARE
RETURN_LONG((long)stat_sb->st_mtime.tv_sec);
RETURN_LONG((php_int_t)stat_sb->st_mtime.tv_sec);
#else
RETURN_LONG((long)stat_sb->st_mtime);
RETURN_LONG((php_int_t)stat_sb->st_mtime);
#endif
case FS_CTIME:
#ifdef NETWARE
RETURN_LONG((long)stat_sb->st_ctime.tv_sec);
RETURN_LONG((php_int_t)stat_sb->st_ctime.tv_sec);
#else
RETURN_LONG((long)stat_sb->st_ctime);
RETURN_LONG((php_int_t)stat_sb->st_ctime);
#endif
case FS_TYPE:
if (S_ISLNK(stat_sb->st_mode)) {
@ -616,8 +616,8 @@ static void phar_file_stat(const char *filename, php_stat_len filename_length, i
if (!IS_ABSOLUTE_PATH(filename, filename_length) && !strstr(filename, "://")) {
char *arch, *entry, *fname;
int arch_len, entry_len, fname_len;
struct stat sb = {0};
zend_str_size_int arch_len, entry_len, fname_len;
php_stat_t sb = {0};
phar_entry_info *data = NULL;
phar_archive_data *phar;
@ -684,7 +684,7 @@ splitted:
goto statme_baby;
} else {
char *save;
int save_len;
zend_str_size_int save_len;
notfound:
efree(entry);
@ -811,9 +811,9 @@ void fname(INTERNAL_FUNCTION_PARAMETERS) { \
PHAR_G(orig)(INTERNAL_FUNCTION_PARAM_PASSTHRU); \
} else { \
char *filename; \
int filename_len; \
zend_str_size_int filename_len; \
\
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &filename, &filename_len) == FAILURE) { \
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "P", &filename, &filename_len) == FAILURE) { \
return; \
} \
\
@ -895,7 +895,7 @@ PharFileFunction(phar_is_dir, FS_IS_DIR, orig_is_dir)
PHAR_FUNC(phar_is_file) /* {{{ */
{
char *filename;
int filename_len;
zend_str_size_int filename_len;
if (!PHAR_G(intercepted)) {
goto skip_phar;
@ -905,12 +905,12 @@ PHAR_FUNC(phar_is_file) /* {{{ */
&& !cached_phars.arBuckets) {
goto skip_phar;
}
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "p", &filename, &filename_len) == FAILURE) {
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "P", &filename, &filename_len) == FAILURE) {
goto skip_phar;
}
if (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://")) {
char *arch, *entry, *fname;
int arch_len, entry_len, fname_len;
zend_str_size_int arch_len, entry_len, fname_len;
fname = (char*)zend_get_executed_filename(TSRMLS_C);
/* we are checking for existence of a file within the relative path. Chances are good that this is
@ -962,7 +962,7 @@ skip_phar:
PHAR_FUNC(phar_is_link) /* {{{ */
{
char *filename;
int filename_len;
zend_str_size_int filename_len;
if (!PHAR_G(intercepted)) {
goto skip_phar;
@ -972,12 +972,12 @@ PHAR_FUNC(phar_is_link) /* {{{ */
&& !cached_phars.arBuckets) {
goto skip_phar;
}
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "p", &filename, &filename_len) == FAILURE) {
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "P", &filename, &filename_len) == FAILURE) {
goto skip_phar;
}
if (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://")) {
char *arch, *entry, *fname;
int arch_len, entry_len, fname_len;
zend_str_size_int arch_len, entry_len, fname_len;
fname = (char*)zend_get_executed_filename(TSRMLS_C);
/* we are checking for existence of a file within the relative path. Chances are good that this is

74
ext/phar/phar.c

@ -27,7 +27,7 @@
static void destroy_phar_data(void *pDest);
ZEND_DECLARE_MODULE_GLOBALS(phar)
char *(*phar_save_resolve_path)(const char *filename, int filename_len TSRMLS_DC);
char *(*phar_save_resolve_path)(const char *filename, zend_str_size_int filename_len TSRMLS_DC);
/**
* set's phar->is_writeable based on the current INI value
@ -526,7 +526,7 @@ void phar_entry_remove(phar_entry_data *idata, char **error TSRMLS_DC) /* {{{ */
/**
* Open an already loaded phar
*/
int phar_open_parsed_phar(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
int phar_open_parsed_phar(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
{
phar_archive_data *phar;
#ifdef PHP_WIN32
@ -601,7 +601,7 @@ int phar_open_parsed_phar(char *fname, int fname_len, char *alias, int alias_len
*
* data is the serialized zval
*/
int phar_parse_metadata(char **buffer, zval **metadata, int zip_metadata_len TSRMLS_DC) /* {{{ */
int phar_parse_metadata(char **buffer, zval **metadata, zend_str_size_int zip_metadata_len TSRMLS_DC) /* {{{ */
{
const unsigned char *p;
php_uint32 buf_len;
@ -657,15 +657,15 @@ int phar_parse_metadata(char **buffer, zval **metadata, int zip_metadata_len TSR
* This is used by phar_open_from_filename to process the manifest, but can be called
* directly.
*/
static int phar_parse_pharfile(php_stream *fp, char *fname, int fname_len, char *alias, int alias_len, long halt_offset, phar_archive_data** pphar, php_uint32 compression, char **error TSRMLS_DC) /* {{{ */
static int phar_parse_pharfile(php_stream *fp, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, php_int_t halt_offset, phar_archive_data** pphar, php_uint32 compression, char **error TSRMLS_DC) /* {{{ */
{
char b32[4], *buffer, *endbuffer, *savebuf;
phar_archive_data *mydata = NULL;
phar_entry_info entry;
php_uint32 manifest_len, manifest_count, manifest_flags, manifest_index, tmp_len, sig_flags;
php_uint16 manifest_ver;
long offset;
int sig_len, register_alias = 0, temp_alias = 0;
php_int_t offset;
zend_str_size_int sig_len, register_alias = 0, temp_alias = 0;
char *signature = NULL;
if (pphar) {
@ -766,7 +766,7 @@ static int phar_parse_pharfile(php_stream *fp, char *fname, int fname_len, char
/* be ignored on reading because it is being generated anyways. */
if (manifest_flags & PHAR_HDR_SIGNATURE) {
char sig_buf[8], *sig_ptr = sig_buf;
off_t read_len;
zend_off_t read_len;
size_t end_of_phar;
if (-1 == php_stream_seek(fp, -8, SEEK_END)
@ -787,7 +787,7 @@ static int phar_parse_pharfile(php_stream *fp, char *fname, int fname_len, char
case PHAR_SIG_OPENSSL: {
php_uint32 signature_len;
char *sig;
off_t whence;
zend_off_t whence;
/* we store the signature followed by the signature length */
if (-1 == php_stream_seek(fp, -12, SEEK_CUR)
@ -1239,11 +1239,11 @@ static int phar_parse_pharfile(php_stream *fp, char *fname, int fname_len, char
/**
* Create or open a phar for writing
*/
int phar_open_or_create_filename(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
int phar_open_or_create_filename(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
{
const char *ext_str, *z;
char *my_error;
int ext_len;
zend_str_size_int ext_len;
phar_archive_data **test, *unused = NULL;
test = &unused;
@ -1316,7 +1316,7 @@ check_file:
}
/* }}} */
int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
int phar_create_or_parse_filename(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
{
phar_archive_data *mydata;
php_stream *fp;
@ -1470,7 +1470,7 @@ int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int a
* that the manifest is proper, then pass it to phar_parse_pharfile(). SUCCESS
* or FAILURE is returned and pphar is set to a pointer to the phar's manifest
*/
int phar_open_from_filename(char *fname, int fname_len, char *alias, int alias_len, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
int phar_open_from_filename(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
{
php_stream *fp;
char *actual;
@ -1527,7 +1527,7 @@ int phar_open_from_filename(char *fname, int fname_len, char *alias, int alias_l
}
/* }}}*/
static inline char *phar_strnstr(const char *buf, int buf_len, const char *search, int search_len) /* {{{ */
static inline char *phar_strnstr(const char *buf, zend_str_size_int buf_len, const char *search, zend_str_size_int search_len) /* {{{ */
{
const char *c;
int so_far = 0;
@ -1561,7 +1561,7 @@ static inline char *phar_strnstr(const char *buf, int buf_len, const char *searc
* that the manifest is proper, then pass it to phar_parse_pharfile(). SUCCESS
* or FAILURE is returned and pphar is set to a pointer to the phar's manifest
*/
static int phar_open_from_fp(php_stream* fp, char *fname, int fname_len, char *alias, int alias_len, int options, phar_archive_data** pphar, int is_data, char **error TSRMLS_DC) /* {{{ */
static int phar_open_from_fp(php_stream* fp, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int options, phar_archive_data** pphar, int is_data, char **error TSRMLS_DC) /* {{{ */
{
const char token[] = "__HALT_COMPILER();";
const char zip_magic[] = "PK\x03\x04";
@ -1570,9 +1570,9 @@ static int phar_open_from_fp(php_stream* fp, char *fname, int fname_len, char *a
char *pos, test = '\0';
const int window_size = 1024;
char buffer[1024 + sizeof(token)]; /* a 1024 byte window + the size of the halt_compiler token (moving window) */
const long readsize = sizeof(buffer) - sizeof(token);
const long tokenlen = sizeof(token) - 1;
long halt_offset;
const php_int_t readsize = sizeof(buffer) - sizeof(token);
const php_int_t tokenlen = sizeof(token) - 1;
php_int_t halt_offset;
size_t got;
php_uint32 compression = PHAR_FILE_COMPRESSED_NONE;
@ -1733,7 +1733,7 @@ static int phar_open_from_fp(php_stream* fp, char *fname, int fname_len, char *a
* if not, check to see if its dirname() exists (i.e. "/path/to") and is a directory
* succeed if we are creating the file, otherwise fail.
*/
static int phar_analyze_path(const char *fname, const char *ext, int ext_len, int for_create TSRMLS_DC) /* {{{ */
static int phar_analyze_path(const char *fname, const char *ext, zend_str_size_int ext_len, int for_create TSRMLS_DC) /* {{{ */
{
php_stream_statbuf ssb;
char *realpath;
@ -1835,7 +1835,7 @@ static int phar_analyze_path(const char *fname, const char *ext, int ext_len, in
/* }}} */
/* check for ".phar" in extension */
static int phar_check_str(const char *fname, const char *ext_str, int ext_len, int executable, int for_create TSRMLS_DC) /* {{{ */
static int phar_check_str(const char *fname, const char *ext_str, zend_str_size_int ext_len, int executable, int for_create TSRMLS_DC) /* {{{ */
{
char test[51];
const char *pos;
@ -1890,7 +1890,7 @@ static int phar_check_str(const char *fname, const char *ext_str, int ext_len, i
* the last parameter should be set to tell the thing to assume that filename is the full path, and only to check the
* extension rules, not to iterate.
*/
int phar_detect_phar_fname_ext(const char *filename, int filename_len, const char **ext_str, int *ext_len, int executable, int for_create, int is_complete TSRMLS_DC) /* {{{ */
int phar_detect_phar_fname_ext(const char *filename, zend_str_size_int filename_len, const char **ext_str, zend_str_size_int *ext_len, int executable, int for_create, int is_complete TSRMLS_DC) /* {{{ */
{
const char *pos, *slash;
@ -1955,8 +1955,8 @@ woohoo:
}
} else {
char *str_key;
uint keylen;
ulong unused;
zend_str_size_uint keylen;
php_uint_t unused;
for (zend_hash_internal_pointer_reset(&(PHAR_GLOBALS->phar_fname_map));
HASH_KEY_NON_EXISTENT != zend_hash_get_current_key_ex(&(PHAR_GLOBALS->phar_fname_map), &str_key, &keylen, &unused, 0, NULL);
@ -2119,13 +2119,13 @@ char *tsrm_strtok_r(char *s, const char *delim, char **last) /* {{{ */
/**
* Remove .. and . references within a phar filename
*/
char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC) /* {{{ */
char *phar_fix_filepath(char *path, zend_str_size_int *new_len, int use_cwd TSRMLS_DC) /* {{{ */
{
char newpath[MAXPATHLEN];
int newpath_len;
zend_str_size_int newpath_len;
char *ptr;
char *tok;
int ptr_length, path_length = *new_len;
zend_str_size_int ptr_length, path_length = *new_len;
if (PHAR_G(cwd_len) && use_cwd && path_length > 2 && path[0] == '.' && path[1] == '/') {
newpath_len = PHAR_G(cwd_len);
@ -2227,13 +2227,13 @@ last_time:
*
* This is used by phar_parse_url()
*/
int phar_split_fname(const char *filename, int filename_len, char **arch, int *arch_len, char **entry, int *entry_len, int executable, int for_create TSRMLS_DC) /* {{{ */
int phar_split_fname(const char *filename, zend_str_size_int filename_len, char **arch, zend_str_size_int *arch_len, char **entry, zend_str_size_int *entry_len, int executable, int for_create TSRMLS_DC) /* {{{ */
{
const char *ext_str;
#ifdef PHP_WIN32
char *save;
#endif
int ext_len;
zend_str_size_int ext_len;
if (!strncasecmp(filename, "phar://", 7)) {
filename += 7;
@ -2294,12 +2294,12 @@ int phar_split_fname(const char *filename, int filename_len, char **arch, int *a
* Invoked when a user calls Phar::mapPhar() from within an executing .phar
* to set up its manifest directly
*/
int phar_open_executed_filename(char *alias, int alias_len, char **error TSRMLS_DC) /* {{{ */
int phar_open_executed_filename(char *alias, zend_str_size_int alias_len, char **error TSRMLS_DC) /* {{{ */
{
char *fname;
zval *halt_constant;
php_stream *fp;
int fname_len;
zend_str_size_int fname_len;
char *actual = NULL;
int ret;
@ -2376,7 +2376,7 @@ int phar_open_executed_filename(char *alias, int alias_len, char **error TSRMLS_
int phar_postprocess_file(phar_entry_data *idata, php_uint32 crc32, char **error, int process_zip TSRMLS_DC) /* {{{ */
{
php_uint32 crc = ~0;
int len = idata->internal_file->uncompressed_filesize;
zend_str_size_int len = idata->internal_file->uncompressed_filesize;
php_stream *fp = idata->fp;
phar_entry_info *entry = idata->internal_file;
@ -2486,7 +2486,7 @@ static int phar_flush_clean_deleted_apply(void *data TSRMLS_DC) /* {{{ */
char *phar_create_default_stub(const char *index_php, const char *web_index, size_t *len, char **error TSRMLS_DC) /* {{{ */
{
char *stub = NULL;
int index_len, web_len;
zend_str_size_int index_len, web_len;
size_t dummy;
if (!len) {
@ -2535,7 +2535,7 @@ char *phar_create_default_stub(const char *index_php, const char *web_index, siz
* user_stub contains either a string, or a resource pointer, if len is a negative length.
* user_stub and len should be both 0 if the default or existing stub should be used
*/
int phar_flush(phar_archive_data *phar, char *user_stub, long len, int convert, char **error TSRMLS_DC) /* {{{ */
int phar_flush(phar_archive_data *phar, char *user_stub, php_int_t len, int convert, char **error TSRMLS_DC) /* {{{ */
{
char halt_stub[] = "__HALT_COMPILER();";
char *newstub, *tmp;
@ -2543,8 +2543,8 @@ int phar_flush(phar_archive_data *phar, char *user_stub, long len, int convert,
int halt_offset, restore_alias_len, global_flags = 0, closeoldfile;
char *pos, has_dirs = 0;
char manifest[18], entry_buffer[24];
off_t manifest_ftell;
long offset;
zend_off_t manifest_ftell;
php_int_t offset;
size_t wrote;
php_uint32 manifest_len, mytime, loc, new_manifest_count;
php_uint32 newcrc32;
@ -3157,7 +3157,7 @@ int phar_flush(phar_archive_data *phar, char *user_stub, long len, int convert,
#endif
default: {
char *digest = NULL;
int digest_len;
zend_str_size_int digest_len;
if (FAILURE == phar_create_signature(phar, newfile, &digest, &digest_len, error TSRMLS_CC)) {
if (error) {
@ -3303,7 +3303,7 @@ static size_t phar_zend_stream_fsizer(void *handle TSRMLS_DC) /* {{{ */
zend_op_array *(*phar_orig_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC);
#define phar_orig_zend_open zend_stream_open_function
static char *phar_resolve_path(const char *filename, int filename_len TSRMLS_DC)
static char *phar_resolve_path(const char *filename, zend_str_size_int filename_len TSRMLS_DC)
{
return phar_find_in_include_path((char *) filename, filename_len, NULL TSRMLS_CC);
}
@ -3519,7 +3519,7 @@ void phar_request_initialize(TSRMLS_D) /* {{{ */
PHP_RSHUTDOWN_FUNCTION(phar) /* {{{ */
{
int i;
php_int_t i;
PHAR_GLOBALS->request_ends = 1;

100
ext/phar/phar_internal.h

@ -179,15 +179,15 @@ ZEND_BEGIN_MODULE_GLOBALS(phar)
void (*orig_stat)(INTERNAL_FUNCTION_PARAMETERS);
/* used for includes with . in them inside front controller */
char* cwd;
int cwd_len;
zend_str_size_int cwd_len;
int cwd_init;
char *openssl_privatekey;
int openssl_privatekey_len;
/* phar_get_archive cache */
char* last_phar_name;
int last_phar_name_len;
zend_str_size_int last_phar_name_len;
char* last_alias;
int last_alias_len;
zend_str_size_int last_alias_len;
phar_archive_data* last_phar;
HashTable mime_types;
ZEND_END_MODULE_GLOBALS(phar)
@ -244,16 +244,16 @@ typedef struct _phar_entry_info {
/* when changing compression, save old flags in case fp is NULL */
php_uint32 old_flags;
zval *metadata;
int metadata_len; /* only used for cached manifests */
zend_str_size_int metadata_len; /* only used for cached manifests */
php_uint32 filename_len;
char *filename;
enum phar_fp_type fp_type;
/* offset within original phar file of the file contents */
long offset_abs;
php_int_t offset_abs;
/* offset within fp of the file contents */
long offset;
php_int_t offset;
/* offset within original phar file of the file header (for zip-based/tar-based) */
long header_offset;
php_int_t header_offset;
php_stream *fp;
php_stream *cfp;
int fp_refcount;
@ -290,9 +290,9 @@ struct _phar_archive_data {
int fname_len;
/* for phar_detect_fname_ext, this stores the location of the file extension within fname */
char *ext;
int ext_len;
zend_str_size_int ext_len;
char *alias;
int alias_len;
zend_str_size_int alias_len;
char version[12];
size_t internal_file_start;
size_t halt_offset;
@ -309,10 +309,10 @@ struct _phar_archive_data {
php_stream *ufp;
int refcount;
php_uint32 sig_flags;
int sig_len;
zend_str_size_int sig_len;
char *signature;
zval *metadata;
int metadata_len; /* only used for cached manifests */
zend_str_size_int metadata_len; /* only used for cached manifests */
uint phar_pos;
/* if 1, then this alias was manually specified by the user and is not a permanent alias */
unsigned int is_temporary_alias:1;
@ -334,7 +334,7 @@ struct _phar_archive_data {
typedef struct _phar_entry_fp_info {
enum phar_fp_type fp_type;
/* offset within fp of the file contents */
long offset;
php_int_t offset;
} phar_entry_fp_info;
struct _phar_entry_fp {
@ -415,7 +415,7 @@ static inline void phar_set_pharufp(phar_archive_data *phar, php_stream *fp TSRM
PHAR_GLOBALS->cached_fp[phar->phar_pos].ufp = fp;
}
static inline void phar_set_fp_type(phar_entry_info *entry, enum phar_fp_type type, off_t offset TSRMLS_DC)
static inline void phar_set_fp_type(phar_entry_info *entry, enum phar_fp_type type, zend_off_t offset TSRMLS_DC)
{
phar_entry_fp_info *data;
@ -437,7 +437,7 @@ static inline enum phar_fp_type phar_get_fp_type(phar_entry_info *entry TSRMLS_D
return PHAR_GLOBALS->cached_fp[entry->phar->phar_pos].manifest[entry->manifest_pos].fp_type;
}
static inline off_t phar_get_fp_offset(phar_entry_info *entry TSRMLS_DC)
static inline zend_off_t phar_get_fp_offset(phar_entry_info *entry TSRMLS_DC)
{
if (!entry->is_persistent) {
return entry->offset;
@ -456,7 +456,7 @@ static inline off_t phar_get_fp_offset(phar_entry_info *entry TSRMLS_DC)
typedef struct _phar_mime_type {
char *mime;
int len;
zend_str_size_int len;
/* one of PHAR_MIME_* */
char type;
} phar_mime_type;
@ -466,9 +466,9 @@ typedef struct _phar_entry_data {
phar_archive_data *phar;
php_stream *fp;
/* stream position proxy, allows multiple open streams referring to the same fp */
off_t position;
zend_off_t position;
/* for copies of the phar fp, defines where 0 is */
off_t zero;
zend_off_t zero;
unsigned int for_write:1;
unsigned int is_zip:1;
unsigned int is_tar:1;
@ -508,7 +508,7 @@ BEGIN_EXTERN_C()
#ifdef PHP_WIN32
char *tsrm_strtok_r(char *s, const char *delim, char **last);
static inline void phar_unixify_path_separators(char *path, int path_len)
static inline void phar_unixify_path_separators(char *path, zend_str_size_int path_len)
{
char *s;
@ -523,7 +523,7 @@ static inline void phar_unixify_path_separators(char *path, int path_len)
/**
* validate an alias, returns 1 for success, 0 for failure
*/
static inline int phar_validate_alias(const char *alias, int alias_len) /* {{{ */
static inline int phar_validate_alias(const char *alias, zend_str_size_int alias_len) /* {{{ */
{
return !(memchr(alias, '/', alias_len) || memchr(alias, '\\', alias_len) || memchr(alias, ':', alias_len) ||
memchr(alias, ';', alias_len) || memchr(alias, '\n', alias_len) || memchr(alias, '\r', alias_len));
@ -533,7 +533,7 @@ static inline int phar_validate_alias(const char *alias, int alias_len) /* {{{ *
static inline void phar_set_inode(phar_entry_info *entry TSRMLS_DC) /* {{{ */
{
char tmp[MAXPATHLEN];
int tmp_len;
zend_str_size_int tmp_len;
tmp_len = entry->filename_len + entry->phar->fname_len;
memcpy(tmp, entry->phar->fname, entry->phar->fname_len);
@ -549,30 +549,30 @@ void phar_destroy_phar_data(phar_archive_data *phar TSRMLS_DC);
int phar_open_entry_file(phar_archive_data *phar, phar_entry_info *entry, char **error TSRMLS_DC);
int phar_postprocess_file(phar_entry_data *idata, php_uint32 crc32, char **error, int process_zip TSRMLS_DC);
int phar_open_from_filename(char *fname, int fname_len, char *alias, int alias_len, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_open_or_create_filename(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_open_executed_filename(char *alias, int alias_len, char **error TSRMLS_DC);
int phar_free_alias(phar_archive_data *phar, char *alias, int alias_len TSRMLS_DC);
int phar_get_archive(phar_archive_data **archive, char *fname, int fname_len, char *alias, int alias_len, char **error TSRMLS_DC);
int phar_open_parsed_phar(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_type, char *sig, int sig_len, char *fname, char **signature, int *signature_len, char **error TSRMLS_DC);
int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signature, int *signature_length, char **error TSRMLS_DC);
int phar_open_from_filename(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_open_or_create_filename(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_create_or_parse_filename(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_open_executed_filename(char *alias, zend_str_size_int alias_len, char **error TSRMLS_DC);
int phar_free_alias(phar_archive_data *phar, char *alias, zend_str_size_int alias_len TSRMLS_DC);
int phar_get_archive(phar_archive_data **archive, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, char **error TSRMLS_DC);
int phar_open_parsed_phar(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_type, char *sig, zend_str_size_int sig_len, char *fname, char **signature, zend_str_size_int *signature_len, char **error TSRMLS_DC);
int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signature, zend_str_size_int *signature_length, char **error TSRMLS_DC);
/* utility functions */
char *phar_create_default_stub(const char *index_php, const char *web_index, size_t *len, char **error TSRMLS_DC);
char *phar_decompress_filter(phar_entry_info * entry, int return_unknown);
char *phar_compress_filter(phar_entry_info * entry, int return_unknown);
void phar_remove_virtual_dirs(phar_archive_data *phar, char *filename, int filename_len TSRMLS_DC);
void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, int filename_len TSRMLS_DC);
int phar_mount_entry(phar_archive_data *phar, char *filename, int filename_len, char *path, int path_len TSRMLS_DC);
void phar_remove_virtual_dirs(phar_archive_data *phar, char *filename, zend_str_size_int filename_len TSRMLS_DC);
void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, zend_str_size_int filename_len TSRMLS_DC);
int phar_mount_entry(phar_archive_data *phar, char *filename, zend_str_size_int filename_len, char *path, zend_str_size_int path_len TSRMLS_DC);
char *phar_find_in_include_path(char *file, int file_len, phar_archive_data **pphar TSRMLS_DC);
char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC);
char *phar_fix_filepath(char *path, zend_str_size_int *new_len, int use_cwd TSRMLS_DC);
phar_entry_info * phar_open_jit(phar_archive_data *phar, phar_entry_info *entry, char **error TSRMLS_DC);
int phar_parse_metadata(char **buffer, zval **metadata, int zip_metadata_len TSRMLS_DC);
int phar_parse_metadata(char **buffer, zval **metadata, zend_str_size_int zip_metadata_len TSRMLS_DC);
void destroy_phar_manifest_entry(void *pDest);
int phar_seek_efp(phar_entry_info *entry, off_t offset, int whence, off_t position, int follow_links TSRMLS_DC);
int phar_seek_efp(phar_entry_info *entry, zend_off_t offset, int whence, zend_off_t position, int follow_links TSRMLS_DC);
php_stream *phar_get_efp(phar_entry_info *entry, int follow_links TSRMLS_DC);
int phar_copy_entry_fp(phar_entry_info *source, phar_entry_info *dest, char **error TSRMLS_DC);
int phar_open_entry_fp(phar_entry_info *entry, char **error, int follow_links TSRMLS_DC);
@ -584,17 +584,17 @@ int phar_copy_on_write(phar_archive_data **pphar TSRMLS_DC);
/* tar functions in tar.c */
int phar_is_tar(char *buf, char *fname);
int phar_parse_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, int alias_len, phar_archive_data** pphar, int is_data, php_uint32 compression, char **error TSRMLS_DC);
int phar_open_or_create_tar(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_tar_flush(phar_archive_data *phar, char *user_stub, long len, int defaultstub, char **error TSRMLS_DC);
int phar_parse_tarfile(php_stream* fp, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, phar_archive_data** pphar, int is_data, php_uint32 compression, char **error TSRMLS_DC);
int phar_open_or_create_tar(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_tar_flush(phar_archive_data *phar, char *user_stub, php_int_t len, int defaultstub, char **error TSRMLS_DC);
/* zip functions in zip.c */
int phar_parse_zipfile(php_stream *fp, char *fname, int fname_len, char *alias, int alias_len, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_open_or_create_zip(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_zip_flush(phar_archive_data *archive, char *user_stub, long len, int defaultstub, char **error TSRMLS_DC);
int phar_parse_zipfile(php_stream *fp, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_open_or_create_zip(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC);
int phar_zip_flush(phar_archive_data *archive, char *user_stub, php_int_t len, int defaultstub, char **error TSRMLS_DC);
#ifdef PHAR_MAIN
static int phar_open_from_fp(php_stream* fp, char *fname, int fname_len, char *alias, int alias_len, int options, phar_archive_data** pphar, int is_data, char **error TSRMLS_DC);
static int phar_open_from_fp(php_stream* fp, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int options, phar_archive_data** pphar, int is_data, char **error TSRMLS_DC);
extern php_stream_wrapper php_stream_phar_wrapper;
#else
extern HashTable cached_phars;
@ -604,13 +604,13 @@ extern HashTable cached_alias;
int phar_archive_delref(phar_archive_data *phar TSRMLS_DC);
int phar_entry_delref(phar_entry_data *idata TSRMLS_DC);
phar_entry_info *phar_get_entry_info(phar_archive_data *phar, char *path, int path_len, char **error, int security TSRMLS_DC);
phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, int path_len, char dir, char **error, int security TSRMLS_DC);
phar_entry_data *phar_get_or_create_entry_data(char *fname, int fname_len, char *path, int path_len, const char *mode, char allow_dir, char **error, int security TSRMLS_DC);
int phar_get_entry_data(phar_entry_data **ret, char *fname, int fname_len, char *path, int path_len, const char *mode, char allow_dir, char **error, int security TSRMLS_DC);
int phar_flush(phar_archive_data *archive, char *user_stub, long len, int convert, char **error TSRMLS_DC);
int phar_detect_phar_fname_ext(const char *filename, int filename_len, const char **ext_str, int *ext_len, int executable, int for_create, int is_complete TSRMLS_DC);
int phar_split_fname(const char *filename, int filename_len, char **arch, int *arch_len, char **entry, int *entry_len, int executable, int for_create TSRMLS_DC);
phar_entry_info *phar_get_entry_info(phar_archive_data *phar, char *path, zend_str_size_int path_len, char **error, int security TSRMLS_DC);
phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, zend_str_size_int path_len, char dir, char **error, int security TSRMLS_DC);
phar_entry_data *phar_get_or_create_entry_data(char *fname, zend_str_size_int fname_len, char *path, zend_str_size_int path_len, const char *mode, char allow_dir, char **error, int security TSRMLS_DC);
int phar_get_entry_data(phar_entry_data **ret, char *fname, zend_str_size_int fname_len, char *path, zend_str_size_int path_len, const char *mode, char allow_dir, char **error, int security TSRMLS_DC);
int phar_flush(phar_archive_data *archive, char *user_stub, php_int_t len, int convert, char **error TSRMLS_DC);
int phar_detect_phar_fname_ext(const char *filename, zend_str_size_int filename_len, const char **ext_str, zend_str_size_int *ext_len, int executable, int for_create, int is_complete TSRMLS_DC);
int phar_split_fname(const char *filename, zend_str_size_int filename_len, char **arch, zend_str_size_int *arch_len, char **entry, zend_str_size_int *entry_len, int executable, int for_create TSRMLS_DC);
typedef enum {
pcr_use_query,
@ -624,7 +624,7 @@ typedef enum {
pcr_err_empty_entry
} phar_path_check_result;
phar_path_check_result phar_path_check(char **p, int *len, const char **error);
phar_path_check_result phar_path_check(char **p, zend_str_size_int *len, const char **error);
END_EXTERN_C()

260
ext/phar/phar_object.c

@ -56,12 +56,12 @@ static int phar_file_type(HashTable *mimes, char *file, char **mime_type TSRMLS_
}
/* }}} */
static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char *basename, int request_uri_len TSRMLS_DC) /* {{{ */
static void phar_mung_server_vars(char *fname, char *entry, zend_str_size_int entry_len, char *basename, zend_str_size_int request_uri_len TSRMLS_DC) /* {{{ */
{
HashTable *_SERVER;
zval **stuff;
char *path_info;
int basename_len = strlen(basename);
zend_str_size_int basename_len = strlen(basename);
int code;
zval *temp;
@ -75,9 +75,9 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char
/* PATH_INFO and PATH_TRANSLATED should always be munged */
if (SUCCESS == zend_hash_find(_SERVER, "PATH_INFO", sizeof("PATH_INFO"), (void **) &stuff)) {
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
code = Z_STRSIZE_PP(stuff);
if (Z_STRLEN_PP(stuff) > entry_len && !memcmp(Z_STRVAL_PP(stuff), entry, entry_len)) {
if (Z_STRSIZE_PP(stuff) > entry_len && !memcmp(Z_STRVAL_PP(stuff), entry, entry_len)) {
ZVAL_STRINGL(*stuff, Z_STRVAL_PP(stuff) + entry_len, request_uri_len, 1);
MAKE_STD_ZVAL(temp);
@ -89,8 +89,8 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char
if (SUCCESS == zend_hash_find(_SERVER, "PATH_TRANSLATED", sizeof("PATH_TRANSLATED"), (void **) &stuff)) {
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry);
code = Z_STRSIZE_PP(stuff);
Z_STRSIZE_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry);
MAKE_STD_ZVAL(temp);
ZVAL_STRINGL(temp, path_info, code, 0);
@ -105,10 +105,10 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_REQUEST_URI) {
if (SUCCESS == zend_hash_find(_SERVER, "REQUEST_URI", sizeof("REQUEST_URI"), (void **) &stuff)) {
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
code = Z_STRSIZE_PP(stuff);
if (Z_STRLEN_PP(stuff) > basename_len && !memcmp(Z_STRVAL_PP(stuff), basename, basename_len)) {
ZVAL_STRINGL(*stuff, Z_STRVAL_PP(stuff) + basename_len, Z_STRLEN_PP(stuff) - basename_len, 1);
if (Z_STRSIZE_PP(stuff) > basename_len && !memcmp(Z_STRVAL_PP(stuff), basename, basename_len)) {
ZVAL_STRINGL(*stuff, Z_STRVAL_PP(stuff) + basename_len, Z_STRSIZE_PP(stuff) - basename_len, 1);
MAKE_STD_ZVAL(temp);
ZVAL_STRINGL(temp, path_info, code, 0);
@ -121,10 +121,10 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_PHP_SELF) {
if (SUCCESS == zend_hash_find(_SERVER, "PHP_SELF", sizeof("PHP_SELF"), (void **) &stuff)) {
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
code = Z_STRSIZE_PP(stuff);
if (Z_STRLEN_PP(stuff) > basename_len && !memcmp(Z_STRVAL_PP(stuff), basename, basename_len)) {
ZVAL_STRINGL(*stuff, Z_STRVAL_PP(stuff) + basename_len, Z_STRLEN_PP(stuff) - basename_len, 1);
if (Z_STRSIZE_PP(stuff) > basename_len && !memcmp(Z_STRVAL_PP(stuff), basename, basename_len)) {
ZVAL_STRINGL(*stuff, Z_STRVAL_PP(stuff) + basename_len, Z_STRSIZE_PP(stuff) - basename_len, 1);
MAKE_STD_ZVAL(temp);
ZVAL_STRINGL(temp, path_info, code, 0);
@ -137,7 +137,7 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_NAME) {
if (SUCCESS == zend_hash_find(_SERVER, "SCRIPT_NAME", sizeof("SCRIPT_NAME"), (void **) &stuff)) {
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
code = Z_STRSIZE_PP(stuff);
ZVAL_STRINGL(*stuff, entry, entry_len, 1);
MAKE_STD_ZVAL(temp);
@ -150,8 +150,8 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_FILENAME) {
if (SUCCESS == zend_hash_find(_SERVER, "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME"), (void **) &stuff)) {
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry);
code = Z_STRSIZE_PP(stuff);
Z_STRSIZE_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry);
MAKE_STD_ZVAL(temp);
ZVAL_STRINGL(temp, path_info, code, 0);
@ -162,19 +162,20 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char
}
/* }}} */
static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char *mime_type, int code, char *entry, int entry_len, char *arch, char *basename, char *ru, int ru_len TSRMLS_DC) /* {{{ */
static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char *mime_type, int code, char *entry, zend_str_size_int entry_len, char *arch, char *basename, char *ru, zend_str_size_int ru_len TSRMLS_DC) /* {{{ */
{
char *name = NULL, buf[8192];
const char *cwd;
zend_syntax_highlighter_ini syntax_highlighter_ini;
sapi_header_line ctr = {0};
size_t got;
int dummy = 1, name_len;
int dummy = 1;
zend_str_size_int name_len;
zend_file_handle file_handle;
zend_op_array *new_op_array;
zval *result = NULL;
php_stream *fp;
off_t position;
zend_off_t position;
switch (code) {
case PHAR_MIME_PHPS:
@ -230,7 +231,7 @@ static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char
if (got > 0) {
PHPWRITE(buf, got);
position += got;
if (position == (off_t) info->uncompressed_filesize) {
if (position == (zend_off_t) info->uncompressed_filesize) {
break;
}
}
@ -330,7 +331,7 @@ static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char
}
/* }}} */
static void phar_do_403(char *entry, int entry_len TSRMLS_DC) /* {{{ */
static void phar_do_403(char *entry, zend_str_size_int entry_len TSRMLS_DC) /* {{{ */
{
sapi_header_line ctr = {0};
@ -345,7 +346,7 @@ static void phar_do_403(char *entry, int entry_len TSRMLS_DC) /* {{{ */
}
/* }}} */
static void phar_do_404(phar_archive_data *phar, char *fname, int fname_len, char *f404, int f404_len, char *entry, int entry_len TSRMLS_DC) /* {{{ */
static void phar_do_404(phar_archive_data *phar, char *fname, zend_str_size_int fname_len, char *f404, zend_str_size_int f404_len, char *entry, zend_str_size_int entry_len TSRMLS_DC) /* {{{ */
{
sapi_header_line ctr = {0};
phar_entry_info *info;
@ -373,10 +374,10 @@ static void phar_do_404(phar_archive_data *phar, char *fname, int fname_len, cha
/* post-process REQUEST_URI and retrieve the actual request URI. This is for
cases like http://localhost/blah.phar/path/to/file.php/extra/stuff
which calls "blah.phar" file "path/to/file.php" with PATH_INFO "/extra/stuff" */
static void phar_postprocess_ru_web(char *fname, int fname_len, char **entry, int *entry_len, char **ru, int *ru_len TSRMLS_DC) /* {{{ */
static void phar_postprocess_ru_web(char *fname, zend_str_size_int fname_len, char **entry, zend_str_size_int *entry_len, char **ru, zend_str_size_int *ru_len TSRMLS_DC) /* {{{ */
{
char *e = *entry + 1, *u = NULL, *u1 = NULL, *saveu = NULL;
int e_len = *entry_len - 1, u_len = 0;
zend_str_size_int e_len = *entry_len - 1, u_len = 0;
phar_archive_data **pphar = NULL;
/* we already know we can retrieve the phar if we reach here */
@ -441,7 +442,7 @@ static void phar_postprocess_ru_web(char *fname, int fname_len, char **entry, in
PHP_METHOD(Phar, running)
{
char *fname, *arch, *entry;
int fname_len, arch_len, entry_len;
zend_str_size_int fname_len, arch_len, entry_len;
zend_bool retphar = 1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &retphar) == FAILURE) {
@ -475,10 +476,10 @@ PHP_METHOD(Phar, running)
PHP_METHOD(Phar, mount)
{
char *fname, *arch = NULL, *entry = NULL, *path, *actual;
int fname_len, arch_len, entry_len, path_len, actual_len;
zend_str_size_int fname_len, arch_len, entry_len, path_len, actual_len;
phar_archive_data **pphar;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &path, &path_len, &actual, &actual_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &path, &path_len, &actual, &actual_len) == FAILURE) {
return;
}
@ -565,14 +566,15 @@ PHP_METHOD(Phar, webPhar)
{
zval *mimeoverride = NULL, *rewrite = NULL;
char *alias = NULL, *error, *index_php = NULL, *f404 = NULL, *ru = NULL;
int alias_len = 0, ret, f404_len = 0, free_pathinfo = 0, ru_len = 0;
zend_str_size_int alias_len = 0, f404_len = 0, ru_len = 0;
char *fname, *path_info, *mime_type = NULL, *entry, *pt;
const char *basename;
int fname_len, entry_len, code, index_php_len = 0, not_cgi;
zend_str_size_int fname_len, entry_len, index_php_len = 0;
int code, not_cgi, ret, free_pathinfo = 0;
phar_archive_data *phar = NULL;
phar_entry_info *info = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!s!saz", &alias, &alias_len, &index_php, &index_php_len, &f404, &f404_len, &mimeoverride, &rewrite) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|S!S!Saz", &alias, &alias_len, &index_php, &index_php_len, &f404, &f404_len, &mimeoverride, &rewrite) == FAILURE) {
return;
}
@ -620,11 +622,11 @@ PHP_METHOD(Phar, webPhar)
if (SUCCESS == zend_hash_find(_server, "PATH_INFO", sizeof("PATH_INFO"), (void**)&z_path_info) &&
IS_STRING == Z_TYPE_PP(z_path_info)) {
entry_len = Z_STRLEN_PP(z_path_info);
entry_len = Z_STRSIZE_PP(z_path_info);
entry = estrndup(Z_STRVAL_PP(z_path_info), entry_len);
path_info = emalloc(Z_STRLEN_PP(z_script_name) + entry_len + 1);
memcpy(path_info, Z_STRVAL_PP(z_script_name), Z_STRLEN_PP(z_script_name));
memcpy(path_info + Z_STRLEN_PP(z_script_name), entry, entry_len + 1);
path_info = emalloc(Z_STRSIZE_PP(z_script_name) + entry_len + 1);
memcpy(path_info, Z_STRVAL_PP(z_script_name), Z_STRSIZE_PP(z_script_name));
memcpy(path_info + Z_STRSIZE_PP(z_script_name), entry, entry_len + 1);
free_pathinfo = 1;
} else {
entry_len = 0;
@ -632,7 +634,7 @@ PHP_METHOD(Phar, webPhar)
path_info = Z_STRVAL_PP(z_script_name);
}
pt = estrndup(Z_STRVAL_PP(z_script_name), Z_STRLEN_PP(z_script_name));
pt = estrndup(Z_STRVAL_PP(z_script_name), Z_STRSIZE_PP(z_script_name));
} else {
char *testit;
@ -725,11 +727,11 @@ PHP_METHOD(Phar, webPhar)
efree(entry);
if (fci.retval_ptr_ptr != &retval_ptr) {
entry = estrndup(Z_STRVAL_PP(fci.retval_ptr_ptr), Z_STRLEN_PP(fci.retval_ptr_ptr));
entry_len = Z_STRLEN_PP(fci.retval_ptr_ptr);
entry = estrndup(Z_STRVAL_PP(fci.retval_ptr_ptr), Z_STRSIZE_PP(fci.retval_ptr_ptr));
entry_len = Z_STRSIZE_PP(fci.retval_ptr_ptr);
} else {
entry = Z_STRVAL_P(retval_ptr);
entry_len = Z_STRLEN_P(retval_ptr);
entry_len = Z_STRSIZE_P(retval_ptr);
}
break;
@ -911,11 +913,11 @@ PHP_METHOD(Phar, mungServer)
return;
}
if (Z_STRLEN_PP(data) == sizeof("PHP_SELF")-1 && !strncmp(Z_STRVAL_PP(data), "PHP_SELF", sizeof("PHP_SELF")-1)) {
if (Z_STRSIZE_PP(data) == sizeof("PHP_SELF")-1 && !strncmp(Z_STRVAL_PP(data), "PHP_SELF", sizeof("PHP_SELF")-1)) {
PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_PHP_SELF;
}
if (Z_STRLEN_PP(data) == sizeof("REQUEST_URI")-1) {
if (Z_STRSIZE_PP(data) == sizeof("REQUEST_URI")-1) {
if (!strncmp(Z_STRVAL_PP(data), "REQUEST_URI", sizeof("REQUEST_URI")-1)) {
PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_REQUEST_URI;
}
@ -924,7 +926,7 @@ PHP_METHOD(Phar, mungServer)
}
}
if (Z_STRLEN_PP(data) == sizeof("SCRIPT_FILENAME")-1 && !strncmp(Z_STRVAL_PP(data), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1)) {
if (Z_STRSIZE_PP(data) == sizeof("SCRIPT_FILENAME")-1 && !strncmp(Z_STRVAL_PP(data), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1)) {
PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_SCRIPT_FILENAME;
}
}
@ -956,10 +958,10 @@ PHP_METHOD(Phar, interceptFileFuncs)
PHP_METHOD(Phar, createDefaultStub)
{
char *index = NULL, *webindex = NULL, *stub, *error;
int index_len = 0, webindex_len = 0;
zend_str_size_int index_len = 0, webindex_len = 0;
size_t stub_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|ss", &index, &index_len, &webindex, &webindex_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|SS", &index, &index_len, &webindex, &webindex_len) == FAILURE) {
return;
}
@ -979,10 +981,10 @@ PHP_METHOD(Phar, createDefaultStub)
PHP_METHOD(Phar, mapPhar)
{
char *alias = NULL, *error;
int alias_len = 0;
long dataoffset = 0;
zend_str_size_int alias_len = 0;
php_int_t dataoffset = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!l", &alias, &alias_len, &dataoffset) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|S!i", &alias, &alias_len, &dataoffset) == FAILURE) {
return;
}
@ -1001,9 +1003,9 @@ PHP_METHOD(Phar, mapPhar)
PHP_METHOD(Phar, loadPhar)
{
char *fname, *alias = NULL, *error;
int fname_len, alias_len = 0;
zend_str_size_int fname_len, alias_len = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &fname, &fname_len, &alias, &alias_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|S!", &fname, &fname_len, &alias, &alias_len) == FAILURE) {
return;
}
@ -1032,9 +1034,9 @@ PHP_METHOD(Phar, apiVersion)
* Returns whether phar extension supports compression using zlib/bzip2 */
PHP_METHOD(Phar, canCompress)
{
long method = 0;
php_int_t method = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &method) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|i", &method) == FAILURE) {
return;
}
@ -1079,10 +1081,11 @@ PHP_METHOD(Phar, isValidPharFilename)
{
char *fname;
const char *ext_str;
int fname_len, ext_len, is_executable;
zend_str_size_int fname_len, ext_len;
int is_executable;
zend_bool executable = 1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &fname, &fname_len, &executable) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|b", &fname, &fname_len, &executable) == FAILURE) {
return;
}
@ -1141,9 +1144,10 @@ PHP_METHOD(Phar, __construct)
zend_throw_exception_ex(zend_exception_get_default(TSRMLS_C), 0 TSRMLS_CC, "Cannot instantiate Phar object without SPL extension");
#else
char *fname, *alias = NULL, *error, *arch = NULL, *entry = NULL, *save_fname;
int fname_len, alias_len = 0, arch_len, entry_len, is_data;
long flags = SPL_FILE_DIR_SKIPDOTS|SPL_FILE_DIR_UNIXPATHS;
long format = 0;
zend_str_size_int fname_len, alias_len = 0, arch_len, entry_len;
int is_data;
php_int_t flags = SPL_FILE_DIR_SKIPDOTS|SPL_FILE_DIR_UNIXPATHS;
php_int_t format = 0;
phar_archive_object *phar_obj;
phar_archive_data *phar_data;
zval *zobj = getThis(), arg1, arg2;
@ -1153,11 +1157,11 @@ PHP_METHOD(Phar, __construct)
is_data = instanceof_function(Z_OBJCE_P(zobj), phar_ce_data TSRMLS_CC);
if (is_data) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls!l", &fname, &fname_len, &flags, &alias, &alias_len, &format) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|iS!i", &fname, &fname_len, &flags, &alias, &alias_len, &format) == FAILURE) {
return;
}
} else {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls!", &fname, &fname_len, &flags, &alias, &alias_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|iS!", &fname, &fname_len, &flags, &alias, &alias_len) == FAILURE) {
return;
}
}
@ -1322,10 +1326,10 @@ PHP_METHOD(Phar, getSupportedCompression)
PHP_METHOD(Phar, unlinkArchive)
{
char *fname, *error, *zname, *arch, *entry;
int fname_len, zname_len, arch_len, entry_len;
zend_str_size_int fname_len, zname_len, arch_len, entry_len;
phar_archive_data *phar;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &fname, &fname_len) == FAILURE) {
RETURN_FALSE;
}
@ -1419,7 +1423,7 @@ static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* {{{
zval **value;
zend_bool close_fp = 1;
struct _phar_t *p_obj = (struct _phar_t*) puser;
uint str_key_len, base_len = p_obj->l, fname_len;
zend_str_size_uint str_key_len, base_len = p_obj->l, fname_len;
phar_entry_data *data;
php_stream *fp;
size_t contents_len;
@ -1466,7 +1470,7 @@ static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* {{{
return ZEND_HASH_APPLY_STOP;
}
str_key_len = Z_STRLEN(key);
str_key_len = Z_STRSIZE(key);
str_key = estrndup(Z_STRVAL(key), str_key_len);
save = str_key;
@ -1535,7 +1539,7 @@ static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* {{{
}
fname = Z_STRVAL_PP(value);
fname_len = Z_STRLEN_PP(value);
fname_len = Z_STRSIZE_PP(value);
phar_spl_fileinfo:
if (base_len) {
@ -1594,7 +1598,7 @@ phar_spl_fileinfo:
return ZEND_HASH_APPLY_STOP;
}
str_key_len = Z_STRLEN(key);
str_key_len = Z_STRSIZE(key);
str_key = estrndup(Z_STRVAL(key), str_key_len);
save = str_key;
@ -1742,7 +1746,7 @@ after_open_fp:
PHP_METHOD(Phar, buildFromDirectory)
{
char *dir, *error, *regex = NULL;
int dir_len, regex_len = 0;
zend_str_size_int dir_len, regex_len = 0;
zend_bool apply_reg = 0;
zval arg, arg2, *iter, *iteriter, *regexiter = NULL;
struct _phar_t pass;
@ -1755,7 +1759,7 @@ PHP_METHOD(Phar, buildFromDirectory)
return;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &dir, &dir_len, &regex, &regex_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|S", &dir, &dir_len, &regex, &regex_len) == FAILURE) {
RETURN_FALSE;
}
@ -1881,7 +1885,7 @@ PHP_METHOD(Phar, buildFromIterator)
{
zval *obj;
char *error;
uint base_len = 0;
zend_str_size_uint base_len = 0;
char *base = NULL;
struct _phar_t pass;
@ -1893,7 +1897,7 @@ PHP_METHOD(Phar, buildFromIterator)
return;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|s", &obj, zend_ce_traversable, &base, &base_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|S", &obj, zend_ce_traversable, &base, &base_len) == FAILURE) {
RETURN_FALSE;
}
@ -1950,10 +1954,10 @@ PHP_METHOD(Phar, count)
*/
PHP_METHOD(Phar, isFileFormat)
{
long type;
php_int_t type;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &type) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i", &type) == FAILURE) {
RETURN_FALSE;
}
@ -2026,8 +2030,8 @@ static zval *phar_rename_archive(phar_archive_data *phar, char *ext, zend_bool c
zend_class_entry *ce;
char *error;
const char *pcr_error;
int ext_len = ext ? strlen(ext) : 0;
int oldname_len;
zend_str_size_int ext_len = ext ? strlen(ext) : 0;
zend_str_size_int oldname_len;
phar_archive_data **pphar = NULL;
php_stream_statbuf ssb;
@ -2354,14 +2358,15 @@ no_copy:
PHP_METHOD(Phar, convertToExecutable)
{
char *ext = NULL;
int is_data, ext_len = 0;
int is_data;
zend_str_size_int ext_len = 0;
php_uint32 flags;
zval *ret;
/* a number that is not 0, 1 or 2 (Which is also Greg's birthday, so there) */
long format = 9021976, method = 9021976;
php_int_t format = 9021976, method = 9021976;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|lls", &format, &method, &ext, &ext_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|iiS", &format, &method, &ext, &ext_len) == FAILURE) {
return;
}
@ -2457,14 +2462,15 @@ PHP_METHOD(Phar, convertToExecutable)
PHP_METHOD(Phar, convertToData)
{
char *ext = NULL;
int is_data, ext_len = 0;
int is_data;
zend_str_size_int ext_len = 0;
php_uint32 flags;
zval *ret;
/* a number that is not 0, 1 or 2 (Which is also Greg's birthday so there) */
long format = 9021976, method = 9021976;
php_int_t format = 9021976, method = 9021976;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|lls", &format, &method, &ext, &ext_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|iiS", &format, &method, &ext, &ext_len) == FAILURE) {
return;
}
@ -2609,7 +2615,7 @@ PHP_METHOD(Phar, isWritable)
PHP_METHOD(Phar, delete)
{
char *fname;
int fname_len;
zend_str_size_int fname_len;
char *error;
phar_entry_info *entry;
PHAR_ARCHIVE_OBJECT();
@ -2620,7 +2626,7 @@ PHP_METHOD(Phar, delete)
return;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &fname, &fname_len) == FAILURE) {
RETURN_FALSE;
}
@ -2694,7 +2700,8 @@ PHP_METHOD(Phar, setAlias)
{
char *alias, *error, *oldalias;
phar_archive_data **fd_ptr;
int alias_len, oldalias_len, old_temp, readd = 0;
zend_str_size_int alias_len, oldalias_len;
int old_temp, readd = 0;
PHAR_ARCHIVE_OBJECT();
@ -2719,7 +2726,7 @@ PHP_METHOD(Phar, setAlias)
RETURN_FALSE;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &alias, &alias_len) == SUCCESS) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &alias, &alias_len) == SUCCESS) {
if (alias_len == phar_obj->arc.archive->alias_len && memcmp(phar_obj->arc.archive->alias, alias, alias_len) == 0) {
RETURN_TRUE;
}
@ -2869,8 +2876,8 @@ PHP_METHOD(Phar, setStub)
{
zval *zstub;
char *stub, *error;
int stub_len;
long len = -1;
zend_str_size_int stub_len;
php_int_t len = -1;
php_stream *stream;
PHAR_ARCHIVE_OBJECT();
@ -2891,7 +2898,7 @@ PHP_METHOD(Phar, setStub)
return;
}
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &zstub, &len) == SUCCESS) {
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &zstub, &len) == SUCCESS) {
if ((php_stream_from_zval_no_verify(stream, &zstub)) != NULL) {
if (len > 0) {
len = -len;
@ -2912,7 +2919,7 @@ PHP_METHOD(Phar, setStub)
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC,
"Cannot change stub, unable to read from input stream");
}
} else if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &stub, &stub_len) == SUCCESS) {
} else if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &stub, &stub_len) == SUCCESS) {
if (phar_obj->arc.archive->is_persistent && FAILURE == phar_copy_on_write(&(phar_obj->arc.archive) TSRMLS_CC)) {
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "phar \"%s\" is persistent, unable to copy on write", phar_obj->arc.archive->fname);
return;
@ -2947,7 +2954,8 @@ PHP_METHOD(Phar, setStub)
PHP_METHOD(Phar, setDefaultStub)
{
char *index = NULL, *webindex = NULL, *error = NULL, *stub = NULL;
int index_len = 0, webindex_len = 0, created_stub = 0;
zend_str_size_int index_len = 0, webindex_len = 0;
int created_stub = 0;
size_t stub_len = 0;
PHAR_ARCHIVE_OBJECT();
@ -2962,7 +2970,7 @@ PHP_METHOD(Phar, setDefaultStub)
return;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!s", &index, &index_len, &webindex, &webindex_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|S!S", &index, &index_len, &webindex, &webindex_len) == FAILURE) {
RETURN_FALSE;
}
@ -3020,9 +3028,9 @@ PHP_METHOD(Phar, setDefaultStub)
*/
PHP_METHOD(Phar, setSignatureAlgorithm)
{
long algo;
php_int_t algo;
char *error, *key = NULL;
int key_len = 0;
zend_str_size_int key_len = 0;
PHAR_ARCHIVE_OBJECT();
@ -3032,7 +3040,7 @@ PHP_METHOD(Phar, setSignatureAlgorithm)
return;
}
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "l|s", &algo, &key, &key_len) != SUCCESS) {
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "i|S", &algo, &key, &key_len) != SUCCESS) {
return;
}
@ -3192,14 +3200,14 @@ static int pharobj_cancompress(HashTable *manifest TSRMLS_DC) /* {{{ */
*/
PHP_METHOD(Phar, compress)
{
long method;
php_int_t method;
char *ext = NULL;
int ext_len = 0;
zend_str_size_int ext_len = 0;
php_uint32 flags;
zval *ret;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|s", &method, &ext, &ext_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i|S", &method, &ext, &ext_len) == FAILURE) {
return;
}
@ -3262,11 +3270,11 @@ PHP_METHOD(Phar, compress)
PHP_METHOD(Phar, decompress)
{
char *ext = NULL;
int ext_len = 0;
zend_str_size_int ext_len = 0;
zval *ret;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &ext, &ext_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|S", &ext, &ext_len) == FAILURE) {
return;
}
@ -3305,10 +3313,10 @@ PHP_METHOD(Phar, compressFiles)
{
char *error;
php_uint32 flags;
long method;
php_int_t method;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &method) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i", &method) == FAILURE) {
return;
}
@ -3427,12 +3435,12 @@ PHP_METHOD(Phar, copy)
{
char *oldfile, *newfile, *error;
const char *pcr_error;
int oldfile_len, newfile_len;
zend_str_size_int oldfile_len, newfile_len;
phar_entry_info *oldentry, newentry = {0}, *temp;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &oldfile, &oldfile_len, &newfile, &newfile_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &oldfile, &oldfile_len, &newfile, &newfile_len) == FAILURE) {
return;
}
@ -3533,12 +3541,12 @@ PHP_METHOD(Phar, copy)
PHP_METHOD(Phar, offsetExists)
{
char *fname;
int fname_len;
zend_str_size_int fname_len;
phar_entry_info *entry;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &fname, &fname_len) == FAILURE) {
return;
}
@ -3570,12 +3578,12 @@ PHP_METHOD(Phar, offsetExists)
PHP_METHOD(Phar, offsetGet)
{
char *fname, *error;
int fname_len;
zend_str_size_int fname_len;
zval *zfname;
phar_entry_info *entry;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &fname, &fname_len) == FAILURE) {
return;
}
@ -3714,7 +3722,7 @@ static void phar_mkdir(phar_archive_data **pphar, char *dirname, int dirname_len
PHP_METHOD(Phar, offsetSet)
{
char *fname, *cont_str = NULL;
int fname_len, cont_len;
zend_str_size_int fname_len, cont_len;
zval *zresource;
PHAR_ARCHIVE_OBJECT();
@ -3723,8 +3731,8 @@ PHP_METHOD(Phar, offsetSet)
return;
}
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sr", &fname, &fname_len, &zresource) == FAILURE
&& zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &fname, &fname_len, &cont_str, &cont_len) == FAILURE) {
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Sr", &fname, &fname_len, &zresource) == FAILURE
&& zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &fname, &fname_len, &cont_str, &cont_len) == FAILURE) {
return;
}
@ -3753,7 +3761,7 @@ PHP_METHOD(Phar, offsetSet)
PHP_METHOD(Phar, offsetUnset)
{
char *fname, *error;
int fname_len;
zend_str_size_int fname_len;
phar_entry_info *entry;
PHAR_ARCHIVE_OBJECT();
@ -3762,7 +3770,7 @@ PHP_METHOD(Phar, offsetUnset)
return;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &fname, &fname_len) == FAILURE) {
return;
}
@ -3805,11 +3813,11 @@ PHP_METHOD(Phar, offsetUnset)
PHP_METHOD(Phar, addEmptyDir)
{
char *dirname;
int dirname_len;
zend_str_size_int dirname_len;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &dirname, &dirname_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &dirname, &dirname_len) == FAILURE) {
return;
}
@ -3828,13 +3836,13 @@ PHP_METHOD(Phar, addEmptyDir)
PHP_METHOD(Phar, addFile)
{
char *fname, *localname = NULL;
int fname_len, localname_len = 0;
zend_str_size_int fname_len, localname_len = 0;
php_stream *resource;
zval *zresource;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &fname, &fname_len, &localname, &localname_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|S", &fname, &fname_len, &localname, &localname_len) == FAILURE) {
return;
}
@ -3874,11 +3882,11 @@ PHP_METHOD(Phar, addFile)
PHP_METHOD(Phar, addFromString)
{
char *localname, *cont_str;
int localname_len, cont_len;
zend_str_size_int localname_len, cont_len;
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &localname, &localname_len, &cont_str, &cont_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &localname, &localname_len, &cont_str, &cont_len) == FAILURE) {
return;
}
@ -4255,7 +4263,7 @@ PHP_METHOD(Phar, extractTo)
php_stream_statbuf ssb;
phar_entry_info *entry;
char *pathto, *filename, *actual;
int pathto_len, filename_len;
zend_str_size_int pathto_len, filename_len;
int ret, i;
int nelems;
zval *zval_files = NULL;
@ -4263,7 +4271,7 @@ PHP_METHOD(Phar, extractTo)
PHAR_ARCHIVE_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z!b", &pathto, &pathto_len, &zval_files, &overwrite) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S|z!b", &pathto, &pathto_len, &zval_files, &overwrite) == FAILURE) {
return;
}
@ -4311,7 +4319,7 @@ PHP_METHOD(Phar, extractTo)
goto all_files;
case IS_STRING:
filename = Z_STRVAL_P(zval_files);
filename_len = Z_STRLEN_P(zval_files);
filename_len = Z_STRSIZE_P(zval_files);
break;
case IS_ARRAY:
nelems = zend_hash_num_elements(Z_ARRVAL_P(zval_files));
@ -4329,7 +4337,7 @@ PHP_METHOD(Phar, extractTo)
"Invalid argument, array of filenames to extract contains non-string value");
return;
}
if (FAILURE == zend_hash_find(&phar_obj->arc.archive->manifest, Z_STRVAL_PP(zval_file), Z_STRLEN_PP(zval_file), (void **)&entry)) {
if (FAILURE == zend_hash_find(&phar_obj->arc.archive->manifest, Z_STRVAL_PP(zval_file), Z_STRSIZE_PP(zval_file), (void **)&entry)) {
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC,
"Phar Error: attempted to extract non-existent file \"%s\" from phar \"%s\"", Z_STRVAL_PP(zval_file), phar_obj->arc.archive->fname);
}
@ -4396,13 +4404,13 @@ all_files:
PHP_METHOD(PharFileInfo, __construct)
{
char *fname, *arch, *entry, *error;
int fname_len, arch_len, entry_len;
zend_str_size_int fname_len, arch_len, entry_len;
phar_entry_object *entry_obj;
phar_entry_info *entry_info;
phar_archive_data *phar_data;
zval *zobj = getThis(), arg1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &fname, &fname_len) == FAILURE) {
return;
}
@ -4502,10 +4510,10 @@ PHP_METHOD(PharFileInfo, getCompressedSize)
PHP_METHOD(PharFileInfo, isCompressed)
{
/* a number that is not Phar::GZ or Phar::BZ2 */
long method = 9021976;
php_int_t method = 9021976;
PHAR_ENTRY_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &method) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|i", &method) == FAILURE) {
return;
}
@ -4585,7 +4593,7 @@ PHP_METHOD(PharFileInfo, getPharFlags)
PHP_METHOD(PharFileInfo, chmod)
{
char *error;
long perms;
php_int_t perms;
PHAR_ENTRY_OBJECT();
if (entry_obj->ent.entry->is_temp_dir) {
@ -4599,7 +4607,7 @@ PHP_METHOD(PharFileInfo, chmod)
return;
}
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &perms) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i", &perms) == FAILURE) {
return;
}
@ -4834,7 +4842,7 @@ PHP_METHOD(PharFileInfo, getContent)
phar_seek_efp(link, 0, SEEK_SET, 0, 0 TSRMLS_CC);
Z_TYPE_P(return_value) = IS_STRING;
Z_STRLEN_P(return_value) = php_stream_copy_to_mem(fp, &(Z_STRVAL_P(return_value)), link->uncompressed_filesize, 0);
Z_STRSIZE_P(return_value) = php_stream_copy_to_mem(fp, &(Z_STRVAL_P(return_value)), link->uncompressed_filesize, 0);
if (!Z_STRVAL_P(return_value)) {
Z_STRVAL_P(return_value) = estrndup("", 0);
@ -4847,11 +4855,11 @@ PHP_METHOD(PharFileInfo, getContent)
*/
PHP_METHOD(PharFileInfo, compress)
{
long method;
php_int_t method;
char *error;
PHAR_ENTRY_OBJECT();
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &method) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i", &method) == FAILURE) {
return;
}

2
ext/phar/phar_path_check.c

@ -22,7 +22,7 @@
#include "phar_internal.h"
phar_path_check_result phar_path_check(char **s, int *len, const char **error)
phar_path_check_result phar_path_check(char **s, zend_str_size_int *len, const char **error)
{
const unsigned char *p = (const unsigned char*)*s;
const unsigned char *m;

2
ext/phar/php_phar.h

@ -34,7 +34,7 @@ extern zend_module_entry phar_module_entry;
#define PHP_PHAR_API PHPAPI
#endif
PHP_PHAR_API int phar_resolve_alias(char *alias, int alias_len, char **filename, int *filename_len TSRMLS_DC);
PHP_PHAR_API int phar_resolve_alias(char *alias, zend_str_size_int alias_len, char **filename, zend_str_size_int *filename_len TSRMLS_DC);
#endif /* PHP_PHAR_H */

34
ext/phar/stream.c

@ -60,7 +60,7 @@ php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const
{
php_url *resource;
char *arch = NULL, *entry = NULL, *error;
int arch_len, entry_len;
zend_str_size_int arch_len, entry_len;
if (strlen(filename) < 7 || strncasecmp(filename, "phar://", 7)) {
return NULL;
@ -378,7 +378,7 @@ static size_t phar_stream_read(php_stream *stream, char *buf, size_t count TSRML
got = php_stream_read(data->fp, buf, MIN(count, entry->uncompressed_filesize - data->position));
data->position = php_stream_tell(data->fp) - data->zero;
stream->eof = (data->position == (off_t) entry->uncompressed_filesize);
stream->eof = (data->position == (zend_off_t) entry->uncompressed_filesize);
return got;
}
@ -387,12 +387,12 @@ static size_t phar_stream_read(php_stream *stream, char *buf, size_t count TSRML
/**
* Used for fseek($fp) on a phar file handle
*/
static int phar_stream_seek(php_stream *stream, off_t offset, int whence, off_t *newoffset TSRMLS_DC) /* {{{ */
static int phar_stream_seek(php_stream *stream, zend_off_t offset, int whence, zend_off_t *newoffset TSRMLS_DC) /* {{{ */
{
phar_entry_data *data = (phar_entry_data *)stream->abstract;
phar_entry_info *entry;
int res;
off_t temp;
zend_off_t temp;
if (data->internal_file->link) {
entry = phar_get_link_source(data->internal_file TSRMLS_CC);
@ -441,7 +441,7 @@ static size_t phar_stream_write(php_stream *stream, const char *buf, size_t coun
return -1;
}
data->position = php_stream_tell(data->fp);
if (data->position > (off_t)data->internal_file->uncompressed_filesize) {
if (data->position > (zend_off_t)data->internal_file->uncompressed_filesize) {
data->internal_file->uncompressed_filesize = data->position;
}
data->internal_file->compressed_filesize = data->internal_file->uncompressed_filesize;
@ -570,8 +570,8 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int f
char *internal_file, *error;
phar_archive_data *phar;
phar_entry_info *entry;
uint host_len;
int internal_file_len;
zend_str_size_uint host_len;
zend_str_size_int internal_file_len;
if ((resource = phar_parse_url(wrapper, url, "r", flags|PHP_STREAM_URL_STAT_QUIET TSRMLS_CC)) == NULL) {
return FAILURE;
@ -628,19 +628,19 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int f
/* check for mounted directories */
if (phar->mounted_dirs.arBuckets && zend_hash_num_elements(&phar->mounted_dirs)) {
char *str_key;
ulong unused;
uint keylen;
php_uint_t unused;
zend_str_size_uint keylen;
HashPosition pos;
for (zend_hash_internal_pointer_reset_ex(&phar->mounted_dirs, &pos);
HASH_KEY_NON_EXISTENT != zend_hash_get_current_key_ex(&phar->mounted_dirs, &str_key, &keylen, &unused, 0, &pos);
zend_hash_move_forward_ex(&phar->mounted_dirs, &pos)
) {
if ((int)keylen >= internal_file_len || strncmp(str_key, internal_file, keylen)) {
if (keylen >= internal_file_len || strncmp(str_key, internal_file, keylen)) {
continue;
} else {
char *test;
int test_len;
zend_str_size_int test_len;
php_stream_statbuf ssbi;
if (SUCCESS != zend_hash_find(&phar->manifest, str_key, keylen, (void **) &entry)) {
@ -682,10 +682,10 @@ static int phar_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int
{
php_url *resource;
char *internal_file, *error;
int internal_file_len;
zend_str_size_int internal_file_len;
phar_entry_data *idata;
phar_archive_data **pphar;
uint host_len;
zend_str_size_uint host_len;
if ((resource = phar_parse_url(wrapper, url, "rb", options TSRMLS_CC)) == NULL) {
php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "phar error: unlink failed");
@ -903,10 +903,10 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
if (is_dir) {
int key_type;
char *str_key, *new_str_key;
uint key_len, new_key_len;
ulong unused;
uint from_len = strlen(resource_from->path+1);
uint to_len = strlen(resource_to->path+1);
zend_str_size_uint key_len, new_key_len;
php_uint_t unused;
zend_str_size_uint from_len = strlen(resource_from->path+1);
zend_str_size_uint to_len = strlen(resource_to->path+1);
for (zend_hash_internal_pointer_reset(&phar->manifest);
HASH_KEY_NON_EXISTENT != (key_type = zend_hash_get_current_key_ex(&phar->manifest, &str_key, &key_len, &unused, 0, NULL)) &&

2
ext/phar/stream.h

@ -34,7 +34,7 @@ static size_t phar_stream_write(php_stream *stream, const char *buf, size_t coun
static size_t phar_stream_read( php_stream *stream, char *buf, size_t count TSRMLS_DC);
static int phar_stream_close(php_stream *stream, int close_handle TSRMLS_DC);
static int phar_stream_flush(php_stream *stream TSRMLS_DC);
static int phar_stream_seek( php_stream *stream, off_t offset, int whence, off_t *newoffset TSRMLS_DC);
static int phar_stream_seek( php_stream *stream, zend_off_t offset, int whence, zend_off_t *newoffset TSRMLS_DC);
static int phar_stream_stat( php_stream *stream, php_stream_statbuf *ssb TSRMLS_DC);
END_EXTERN_C()

2
ext/phar/stub.h

@ -18,7 +18,7 @@
/* $Id$ */
static inline void phar_get_stub(const char *index_php, const char *web, size_t *len, char **stub, const int name_len, const int web_len TSRMLS_DC)
static inline void phar_get_stub(const char *index_php, const char *web, size_t *len, char **stub, const zend_str_size_int name_len, const zend_str_size_int web_len TSRMLS_DC)
{
static const char newstub0[] = "<?php\n\n$web = '";
static const char newstub1_0[] = "';\n\nif (in_array('phar', stream_get_wrappers()) && class_exists('Phar', 0)) {\nPhar::interceptFileFuncs();\nset_include_path('phar://' . __FILE__ . PATH_SEPARATOR . get_include_path());\nPhar::webPhar(null, $web);\ninclude 'phar://' . __FILE__ . '/' . Extract_Phar::START;\nreturn;\n}\n\nif (@(isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'POST'))) {\nExtract_Phar::go(true);\n$mimes = array(\n'phps' => 2,\n'c' => 'text/plain',\n'cc' => 'text/plain',\n'cpp' => 'text/plain',\n'c++' => 'text/plain',\n'dtd' => 'text/plain',\n'h' => 'text/plain',\n'log' => 'text/plain',\n'rng' => 'text/plain',\n'txt' => 'text/plain',\n'xsd' => 'text/plain',\n'php' => 1,\n'inc' => 1,\n'avi' => 'video/avi',\n'bmp' => 'image/bmp',\n'css' => 'text/css',\n'gif' => 'image/gif',\n'htm' => 'text/html',\n'html' => 'text/html',\n'htmls' => 'text/html',\n'ico' => 'image/x-ico',\n'jpe' => 'image/jpeg',\n'jpg' => 'image/jpeg',\n'jpeg' => 'image/jpeg',\n'js' => 'application/x-javascript',\n'midi' => 'audio/midi',\n'mid' => 'audio/midi',\n'mod' => 'audio/mod',\n'mov' => 'movie/quicktime',\n'mp3' => 'audio/mp3',\n'mpg' => 'video/mpeg',\n'mpeg' => 'video/mpeg',\n'pdf' => 'application/pdf',\n'png' => 'image/png',\n'swf' => 'application/shockwave-flash',\n'tif' => 'image/tiff',\n'tiff' => 'image/tiff',\n'wav' => 'audio/wav',\n'xbm' => 'image/xbm',\n'xml' => 'text/xml',\n);\n\nheader(\"Cache-Control: no-cache, must-revalidate\");\nheader(\"Pragma: no-cache\");\n\n$basename = basename(__FILE__);\nif (!strpos($_SERVER['REQUEST_URI'], $basename)) {\nchdir(Extract_Phar::$temp);\ninclude $web;\nreturn;\n}\n$pt = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], $basename) + strlen($basename));\nif (!$pt || $pt == '/') {\n$pt = $web;\nheader('HTTP/1.1 301 Moved Permanently');\nheader('Location: ' . $_SERVER['REQUEST_URI'] . '/' . $pt);\nexit;\n}\n$a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);\nif (!$a || strlen(dirname($a)) < strlen(";

21
ext/phar/tar.c

@ -19,7 +19,7 @@
#include "phar_internal.h"
static php_uint32 phar_tar_number(char *buf, int len) /* {{{ */
static php_uint32 phar_tar_number(char *buf, zend_str_size_int len) /* {{{ */
{
php_uint32 num = 0;
int i = 0;
@ -62,10 +62,10 @@ static php_uint32 phar_tar_number(char *buf, int len) /* {{{ */
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
static int phar_tar_octal(char *buf, php_uint32 val, int len) /* {{{ */
static int phar_tar_octal(char *buf, php_uint32 val, zend_str_size_int len) /* {{{ */
{
char *p = buf;
int s = len;
zend_str_size_int s = len;
p += len; /* Start at the end and work backwards. */
while (s-- > 0) {
@ -84,7 +84,7 @@ static int phar_tar_octal(char *buf, php_uint32 val, int len) /* {{{ */
}
/* }}} */
static php_uint32 phar_tar_checksum(char *buf, int len) /* {{{ */
static php_uint32 phar_tar_checksum(char *buf, zend_str_size_int len) /* {{{ */
{
php_uint32 sum = 0;
char *end = buf + len;
@ -121,7 +121,7 @@ int phar_is_tar(char *buf, char *fname) /* {{{ */
}
/* }}} */
int phar_open_or_create_tar(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
int phar_open_or_create_tar(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
{
phar_archive_data *phar;
int ret = phar_create_or_parse_filename(fname, fname_len, alias, alias_len, is_data, options, &phar, error TSRMLS_CC);
@ -192,7 +192,7 @@ static int phar_tar_process_metadata(phar_entry_info *entry, php_stream *fp TSRM
}
/* }}} */
int phar_parse_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, int alias_len, phar_archive_data** pphar, int is_data, php_uint32 compression, char **error TSRMLS_DC) /* {{{ */
int phar_parse_tarfile(php_stream* fp, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, phar_archive_data** pphar, int is_data, php_uint32 compression, char **error TSRMLS_DC) /* {{{ */
{
char buf[512], *actual_alias = NULL, *p;
phar_entry_info entry = {0};
@ -256,7 +256,7 @@ int phar_parse_tarfile(php_stream* fp, char *fname, int fname_len, char *alias,
phar_tar_number(hdr->size, sizeof(hdr->size));
if (((!old && hdr->prefix[0] == 0) || old) && strlen(hdr->name) == sizeof(".phar/signature.bin")-1 && !strncmp(hdr->name, ".phar/signature.bin", sizeof(".phar/signature.bin")-1)) {
off_t curloc;
zend_off_t curloc;
if (size > 511) {
if (error) {
@ -863,7 +863,7 @@ int phar_tar_setmetadata(zval *metadata, phar_entry_info *entry, char **error TS
static int phar_tar_setupmetadata(void *pDest, void *argument TSRMLS_DC) /* {{{ */
{
int lookfor_len;
zend_str_size_int lookfor_len;
struct _phar_pass_tar_info *i = (struct _phar_pass_tar_info *)argument;
char *lookfor, **error = i->error;
phar_entry_info *entry = (phar_entry_info *)pDest, *metadata, newentry = {0};
@ -917,12 +917,13 @@ static int phar_tar_setupmetadata(void *pDest, void *argument TSRMLS_DC) /* {{{
}
/* }}} */
int phar_tar_flush(phar_archive_data *phar, char *user_stub, long len, int defaultstub, char **error TSRMLS_DC) /* {{{ */
int phar_tar_flush(phar_archive_data *phar, char *user_stub, php_int_t len, int defaultstub, char **error TSRMLS_DC) /* {{{ */
{
phar_entry_info entry = {0};
static const char newstub[] = "<?php // tar-based phar archive stub file\n__HALT_COMPILER();";
php_stream *oldfile, *newfile, *stubfile;
int closeoldfile, free_user_stub, signature_length;
int closeoldfile, free_user_stub;
zend_str_size_int signature_length;
struct _phar_pass_tar_info pass;
char *buf, *signature, *tmp, sigbuf[8];
char halt_stub[] = "__HALT_COMPILER();";

100
ext/phar/util.c

@ -38,7 +38,7 @@
#include <openssl/ssl.h>
#include <openssl/pkcs12.h>
#else
static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end, char *key, int key_len, char **signature, int *signature_len TSRMLS_DC);
static int phar_call_openssl_signverify(int is_sign, php_stream *fp, zend_off_t end, char *key, zend_str_size_int key_len, char **signature, zend_str_size_int *signature_len TSRMLS_DC);
#endif
/* for links to relative location, prepend cwd of the entry */
@ -117,10 +117,10 @@ php_stream *phar_get_efp(phar_entry_info *entry, int follow_links TSRMLS_DC) /*
}
/* }}} */
int phar_seek_efp(phar_entry_info *entry, off_t offset, int whence, off_t position, int follow_links TSRMLS_DC) /* {{{ */
int phar_seek_efp(phar_entry_info *entry, zend_off_t offset, int whence, zend_off_t position, int follow_links TSRMLS_DC) /* {{{ */
{
php_stream *fp = phar_get_efp(entry, follow_links TSRMLS_CC);
off_t temp, eoffset;
zend_off_t temp, eoffset;
if (!fp) {
return -1;
@ -154,7 +154,7 @@ int phar_seek_efp(phar_entry_info *entry, off_t offset, int whence, off_t positi
temp = 0;
}
if (temp > eoffset + (off_t) entry->uncompressed_filesize) {
if (temp > eoffset + (zend_off_t) entry->uncompressed_filesize) {
return -1;
}
@ -167,7 +167,7 @@ int phar_seek_efp(phar_entry_info *entry, off_t offset, int whence, off_t positi
/* }}} */
/* mount an absolute path or uri to a path internal to the phar archive */
int phar_mount_entry(phar_archive_data *phar, char *filename, int filename_len, char *path, int path_len TSRMLS_DC) /* {{{ */
int phar_mount_entry(phar_archive_data *phar, char *filename, zend_str_size_int filename_len, char *path, zend_str_size_int path_len TSRMLS_DC) /* {{{ */
{
phar_entry_info entry = {0};
php_stream_statbuf ssb;
@ -250,10 +250,10 @@ int phar_mount_entry(phar_archive_data *phar, char *filename, int filename_len,
}
/* }}} */
char *phar_find_in_include_path(char *filename, int filename_len, phar_archive_data **pphar TSRMLS_DC) /* {{{ */
char *phar_find_in_include_path(char *filename, zend_str_size_int filename_len, phar_archive_data **pphar TSRMLS_DC) /* {{{ */
{
char *path, *fname, *arch, *entry, *ret, *test;
int arch_len, entry_len, fname_len, ret_len;
zend_str_size_int arch_len, entry_len, fname_len, ret_len;
phar_archive_data *phar;
if (pphar) {
@ -283,7 +283,7 @@ char *phar_find_in_include_path(char *filename, int filename_len, phar_archive_d
efree(entry);
if (*filename == '.') {
int try_len;
zend_str_size_int try_len;
if (FAILURE == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL TSRMLS_CC)) {
efree(arch);
@ -350,7 +350,7 @@ splitted:
* appended, truncated, or read. For read, if the entry is marked unmodified, it is
* assumed that the file pointer, if present, is opened for reading
*/
int phar_get_entry_data(phar_entry_data **ret, char *fname, int fname_len, char *path, int path_len, const char *mode, char allow_dir, char **error, int security TSRMLS_DC) /* {{{ */
int phar_get_entry_data(phar_entry_data **ret, char *fname, zend_str_size_int fname_len, char *path, zend_str_size_int path_len, const char *mode, char allow_dir, char **error, int security TSRMLS_DC) /* {{{ */
{
phar_archive_data *phar;
phar_entry_info *entry;
@ -511,7 +511,7 @@ really_get_entry:
/**
* Create a new dummy file slot within a writeable phar for a newly created file
*/
phar_entry_data *phar_get_or_create_entry_data(char *fname, int fname_len, char *path, int path_len, const char *mode, char allow_dir, char **error, int security TSRMLS_DC) /* {{{ */
phar_entry_data *phar_get_or_create_entry_data(char *fname, zend_str_size_int fname_len, char *path, zend_str_size_int path_len, const char *mode, char allow_dir, char **error, int security TSRMLS_DC) /* {{{ */
{
phar_archive_data *phar;
phar_entry_info *entry, etemp;
@ -693,7 +693,7 @@ int phar_open_entry_fp(phar_entry_info *entry, char **error, int follow_links TS
php_stream_filter *filter;
phar_archive_data *phar = entry->phar;
char *filtername;
off_t loc;
zend_off_t loc;
php_stream *ufp;
phar_entry_data dummy;
@ -786,7 +786,7 @@ int phar_open_entry_fp(phar_entry_info *entry, char **error, int follow_links TS
php_stream_flush(ufp);
php_stream_filter_remove(filter, 1 TSRMLS_CC);
if (php_stream_tell(ufp) - loc != (off_t) entry->uncompressed_filesize) {
if (php_stream_tell(ufp) - loc != (zend_off_t) entry->uncompressed_filesize) {
spprintf(error, 4096, "phar error: internal corruption of phar \"%s\" (actual filesize mismatch on file \"%s\")", phar->fname, entry->filename);
return FAILURE;
}
@ -923,7 +923,7 @@ phar_entry_info * phar_open_jit(phar_archive_data *phar, phar_entry_info *entry,
}
/* }}} */
PHP_PHAR_API int phar_resolve_alias(char *alias, int alias_len, char **filename, int *filename_len TSRMLS_DC) /* {{{ */ {
PHP_PHAR_API int phar_resolve_alias(char *alias, zend_str_size_int alias_len, char **filename, zend_str_size_int *filename_len TSRMLS_DC) /* {{{ */ {
phar_archive_data **fd_ptr;
if (PHAR_GLOBALS->phar_alias_map.arBuckets
&& SUCCESS == zend_hash_find(&(PHAR_GLOBALS->phar_alias_map), alias, alias_len, (void**)&fd_ptr)) {
@ -935,7 +935,7 @@ PHP_PHAR_API int phar_resolve_alias(char *alias, int alias_len, char **filename,
}
/* }}} */
int phar_free_alias(phar_archive_data *phar, char *alias, int alias_len TSRMLS_DC) /* {{{ */
int phar_free_alias(phar_archive_data *phar, char *alias, zend_str_size_int alias_len TSRMLS_DC) /* {{{ */
{
if (phar->refcount || phar->is_persistent) {
return FAILURE;
@ -958,12 +958,12 @@ int phar_free_alias(phar_archive_data *phar, char *alias, int alias_len TSRMLS_D
* Looks up a phar archive in the filename map, connecting it to the alias
* (if any) or returns null
*/
int phar_get_archive(phar_archive_data **archive, char *fname, int fname_len, char *alias, int alias_len, char **error TSRMLS_DC) /* {{{ */
int phar_get_archive(phar_archive_data **archive, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, char **error TSRMLS_DC) /* {{{ */
{
phar_archive_data *fd, **fd_ptr;
char *my_realpath, *save;
int save_len;
ulong fhash, ahash = 0;
zend_str_size_int save_len;
php_uint_t fhash, ahash = 0;
phar_request_initialize(TSRMLS_C);
@ -1206,7 +1206,7 @@ char * phar_decompress_filter(phar_entry_info * entry, int return_unknown) /* {{
/**
* retrieve information on a file contained within a phar, or null if it ain't there
*/
phar_entry_info *phar_get_entry_info(phar_archive_data *phar, char *path, int path_len, char **error, int security TSRMLS_DC) /* {{{ */
phar_entry_info *phar_get_entry_info(phar_archive_data *phar, char *path, zend_str_size_int path_len, char **error, int security TSRMLS_DC) /* {{{ */
{
return phar_get_entry_info_dir(phar, path, path_len, 0, error, security TSRMLS_CC);
}
@ -1216,7 +1216,7 @@ phar_entry_info *phar_get_entry_info(phar_archive_data *phar, char *path, int pa
* allow_dir is 0 for none, 1 for both empty directories in the phar and temp directories, and 2 for only
* valid pre-existing empty directory entries
*/
phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, int path_len, char dir, char **error, int security TSRMLS_DC) /* {{{ */
phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, zend_str_size_int path_len, char dir, char **error, int security TSRMLS_DC) /* {{{ */
{
const char *pcr_error;
phar_entry_info *entry;
@ -1300,8 +1300,8 @@ phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, in
if (phar->mounted_dirs.arBuckets && zend_hash_num_elements(&phar->mounted_dirs)) {
char *str_key;
ulong unused;
uint keylen;
php_uint_t unused;
zend_str_size_uint keylen;
zend_hash_internal_pointer_reset(&phar->mounted_dirs);
while (FAILURE != zend_hash_has_more_elements(&phar->mounted_dirs)) {
@ -1309,11 +1309,11 @@ phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, in
break;
}
if ((int)keylen >= path_len || strncmp(str_key, path, keylen)) {
if (keylen >= path_len || strncmp(str_key, path, keylen)) {
continue;
} else {
char *test;
int test_len;
zend_str_size_int test_len;
php_stream_statbuf ssb;
if (SUCCESS != zend_hash_find(&phar->manifest, str_key, keylen, (void **) &entry)) {
@ -1399,7 +1399,7 @@ static int phar_hex_str(const char *digest, size_t digest_len, char **signature
/* }}} */
#ifndef PHAR_HAVE_OPENSSL
static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end, char *key, int key_len, char **signature, int *signature_len TSRMLS_DC) /* {{{ */
static int phar_call_openssl_signverify(int is_sign, php_stream *fp, zend_off_t end, char *key, zend_str_size_int key_len, char **signature, int *signature_len TSRMLS_DC) /* {{{ */
{
zend_fcall_info fci;
zend_fcall_info_cache fcc;
@ -1418,9 +1418,9 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end,
php_stream_rewind(fp);
Z_TYPE_P(zdata) = IS_STRING;
Z_STRLEN_P(zdata) = end;
Z_STRSIZE_P(zdata) = end;
if (end != (off_t) php_stream_copy_to_mem(fp, &(Z_STRVAL_P(zdata)), (size_t) end, 0)) {
if (end != (zend_off_t) php_stream_copy_to_mem(fp, &(Z_STRVAL_P(zdata)), (size_t) end, 0)) {
zval_dtor(zdata);
zval_dtor(zsig);
zval_dtor(zkey);
@ -1498,8 +1498,8 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end,
case IS_BOOL:
efree(retval_ptr);
if (Z_BVAL_P(retval_ptr)) {
*signature = estrndup(Z_STRVAL_P(zsig), Z_STRLEN_P(zsig));
*signature_len = Z_STRLEN_P(zsig);
*signature = estrndup(Z_STRVAL_P(zsig), Z_STRSIZE_P(zsig));
*signature_len = Z_STRSIZE_P(zsig);
zval_dtor(zsig);
efree(zsig);
return SUCCESS;
@ -1512,10 +1512,10 @@ static int phar_call_openssl_signverify(int is_sign, php_stream *fp, off_t end,
/* }}} */
#endif /* #ifndef PHAR_HAVE_OPENSSL */
int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_type, char *sig, int sig_len, char *fname, char **signature, int *signature_len, char **error TSRMLS_DC) /* {{{ */
int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_type, char *sig, zend_str_size_int sig_len, char *fname, char **signature, zend_str_size_int *signature_len, char **error TSRMLS_DC) /* {{{ */
{
int read_size, len;
off_t read_len;
zend_str_size_int read_size, len;
zend_off_t read_len;
unsigned char buf[1024];
php_stream_rewind(fp);
@ -1609,17 +1609,17 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
if (read_len > sizeof(buf)) {
read_size = sizeof(buf);
} else {
read_size = (int)read_len;
read_size = read_len;
}
php_stream_seek(fp, 0, SEEK_SET);
while (read_size && (len = php_stream_read(fp, (char*)buf, read_size)) > 0) {
EVP_VerifyUpdate (&md_ctx, buf, len);
read_len -= (off_t)len;
read_len -= (zend_off_t)len;
if (read_len < read_size) {
read_size = (int)read_len;
read_size = read_len;
}
}
@ -1651,14 +1651,14 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
if (read_len > sizeof(buf)) {
read_size = sizeof(buf);
} else {
read_size = (int)read_len;
read_size = read_len;
}
while ((len = php_stream_read(fp, (char*)buf, read_size)) > 0) {
PHP_SHA512Update(&context, buf, len);
read_len -= (off_t)len;
read_len -= (zend_off_t)len;
if (read_len < read_size) {
read_size = (int)read_len;
read_size = read_len;
}
}
@ -1684,14 +1684,14 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
if (read_len > sizeof(buf)) {
read_size = sizeof(buf);
} else {
read_size = (int)read_len;
read_size = read_len;
}
while ((len = php_stream_read(fp, (char*)buf, read_size)) > 0) {
PHP_SHA256Update(&context, buf, len);
read_len -= (off_t)len;
read_len -= (zend_off_t)len;
if (read_len < read_size) {
read_size = (int)read_len;
read_size = read_len;
}
}
@ -1725,14 +1725,14 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
if (read_len > sizeof(buf)) {
read_size = sizeof(buf);
} else {
read_size = (int)read_len;
read_size = read_len;
}
while ((len = php_stream_read(fp, (char*)buf, read_size)) > 0) {
PHP_SHA1Update(&context, buf, len);
read_len -= (off_t)len;
read_len -= (zend_off_t)len;
if (read_len < read_size) {
read_size = (int)read_len;
read_size = read_len;
}
}
@ -1758,14 +1758,14 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
if (read_len > sizeof(buf)) {
read_size = sizeof(buf);
} else {
read_size = (int)read_len;
read_size = read_len;
}
while ((len = php_stream_read(fp, (char*)buf, read_size)) > 0) {
PHP_MD5Update(&context, buf, len);
read_len -= (off_t)len;
read_len -= (zend_off_t)len;
if (read_len < read_size) {
read_size = (int)read_len;
read_size = read_len;
}
}
@ -1791,10 +1791,10 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
}
/* }}} */
int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signature, int *signature_length, char **error TSRMLS_DC) /* {{{ */
int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signature, zend_str_size_int *signature_length, char **error TSRMLS_DC) /* {{{ */
{
unsigned char buf[1024];
int sig_len;
zend_str_size_int sig_len;
php_stream_rewind(fp);
@ -1845,7 +1845,7 @@ int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signat
return FAILURE;
#endif
case PHAR_SIG_OPENSSL: {
int siglen;
zend_str_size_int siglen;
unsigned char *sigbuf;
#ifdef PHAR_HAVE_OPENSSL
BIO *in;
@ -1959,7 +1959,7 @@ int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signat
}
/* }}} */
void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, int filename_len TSRMLS_DC) /* {{{ */
void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, zend_str_size_int filename_len TSRMLS_DC) /* {{{ */
{
const char *s;

22
ext/phar/zip.c

@ -163,11 +163,11 @@ static void phar_zip_u2d_time(time_t time, char *dtime, char *ddate) /* {{{ */
* This is used by phar_open_from_fp to process a zip-based phar, but can be called
* directly.
*/
int phar_parse_zipfile(php_stream *fp, char *fname, int fname_len, char *alias, int alias_len, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
int phar_parse_zipfile(php_stream *fp, char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
{
phar_zip_dir_end locator;
char buf[sizeof(locator) + 65536];
long size;
php_int_t size;
php_uint16 i;
phar_archive_data *mydata = NULL;
phar_entry_info entry = {0};
@ -350,7 +350,7 @@ foundit:
/* add each central directory item to the manifest */
for (i = 0; i < PHAR_GET_16(locator.count); ++i) {
phar_zip_central_dir_file zipentry;
off_t beforeus = php_stream_tell(fp);
zend_off_t beforeus = php_stream_tell(fp);
if (sizeof(zipentry) != php_stream_read(fp, (char *) &zipentry, sizeof(zipentry))) {
PHAR_ZIP_FAIL("unable to read central directory entry, truncated");
@ -405,7 +405,7 @@ foundit:
if (entry.filename_len == sizeof(".phar/signature.bin")-1 && !strncmp(entry.filename, ".phar/signature.bin", sizeof(".phar/signature.bin")-1)) {
size_t read;
php_stream *sigfile;
off_t now;
zend_off_t now;
char *sig;
now = php_stream_tell(fp);
@ -460,7 +460,7 @@ foundit:
phar_add_virtual_dirs(mydata, entry.filename, entry.filename_len TSRMLS_CC);
if (PHAR_GET_16(zipentry.extra_len)) {
off_t loc = php_stream_tell(fp);
zend_off_t loc = php_stream_tell(fp);
if (FAILURE == phar_zip_process_extra(fp, &entry, PHAR_GET_16(zipentry.extra_len) TSRMLS_CC)) {
pefree(entry.filename, entry.is_persistent);
PHAR_ZIP_FAIL("Unable to process extra field header for file in central directory");
@ -556,7 +556,7 @@ foundit:
if (!actual_alias && entry.filename_len == sizeof(".phar/alias.txt")-1 && !strncmp(entry.filename, ".phar/alias.txt", sizeof(".phar/alias.txt")-1)) {
php_stream_filter *filter;
off_t saveloc;
zend_off_t saveloc;
/* verify local file header */
phar_zip_file_header local;
@ -717,7 +717,7 @@ foundit:
/**
* Create or open a zip-based phar for writing
*/
int phar_open_or_create_zip(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
int phar_open_or_create_zip(char *fname, zend_str_size_int fname_len, char *alias, zend_str_size_int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC) /* {{{ */
{
phar_archive_data *phar;
int ret = phar_create_or_parse_filename(fname, fname_len, alias, alias_len, is_data, options, &phar, error TSRMLS_CC);
@ -769,7 +769,7 @@ static int phar_zip_changed_apply(void *data, void *arg TSRMLS_DC) /* {{{ */
phar_zip_central_dir_file central;
struct _phar_zip_pass *p;
php_uint32 newcrc32;
off_t offset;
zend_off_t offset;
int not_really_modified = 0;
entry = (phar_entry_info *)data;
p = (struct _phar_zip_pass*) arg;
@ -1079,11 +1079,11 @@ static int phar_zip_applysignature(phar_archive_data *phar, struct _phar_zip_pas
{
/* add signature for executable tars or tars explicitly set with setSignatureAlgorithm */
if (!phar->is_data || phar->sig_flags) {
int signature_length;
zend_str_size_int signature_length;
char *signature, sigbuf[8];
phar_entry_info entry = {0};
php_stream *newfile;
off_t tell, st;
zend_off_t tell, st;
newfile = php_stream_fopen_tmpfile();
if (newfile == NULL) {
@ -1152,7 +1152,7 @@ static int phar_zip_applysignature(phar_archive_data *phar, struct _phar_zip_pas
}
/* }}} */
int phar_zip_flush(phar_archive_data *phar, char *user_stub, long len, int defaultstub, char **error TSRMLS_DC) /* {{{ */
int phar_zip_flush(phar_archive_data *phar, char *user_stub, php_int_t len, int defaultstub, char **error TSRMLS_DC) /* {{{ */
{
char *pos;
smart_str main_metadata_str = {0};

Loading…
Cancel
Save