From 5c0e1185738ef7f475a6439ea02922e26d291287 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 16 Dec 2014 09:31:20 +0100 Subject: [PATCH 1/3] fix bad pointer cast in ext/phar, fix segfault and failed tests (bigendian) --- ext/phar/func_interceptors.c | 6 +++--- ext/phar/phar_object.c | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) mode change 100644 => 100755 ext/phar/phar_object.c diff --git a/ext/phar/func_interceptors.c b/ext/phar/func_interceptors.c index bd7324c78e1..fa303a3b220 100644 --- a/ext/phar/func_interceptors.c +++ b/ext/phar/func_interceptors.c @@ -339,7 +339,7 @@ PHAR_FUNC(phar_fopen) /* {{{ */ } if (use_include_path || (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://"))) { char *arch, *entry, *fname; - size_t arch_len, entry_len, fname_len; + int arch_len, entry_len, fname_len; php_stream_context *context = NULL; char *name; phar_archive_data *phar; @@ -349,7 +349,7 @@ PHAR_FUNC(phar_fopen) /* {{{ */ goto skip_phar; } fname_len = strlen(fname); - if (FAILURE == phar_split_fname(fname, fname_len, &arch, (int *)&arch_len, &entry, (int *)&entry_len, 2, 0 TSRMLS_CC)) { + if (FAILURE == phar_split_fname(fname, fname_len, &arch, &arch_len, &entry, &entry_len, 2, 0 TSRMLS_CC)) { goto skip_phar; } @@ -371,7 +371,7 @@ PHAR_FUNC(phar_fopen) /* {{{ */ name = entry; } } else { - entry = phar_fix_filepath(estrndup(entry, entry_len), (int *)&entry_len, 1 TSRMLS_CC); + entry = phar_fix_filepath(estrndup(entry, entry_len), &entry_len, 1 TSRMLS_CC); if (entry[0] == '/') { if (!zend_hash_str_exists(&(phar->manifest), entry + 1, entry_len - 1)) { /* this file is not in the phar, use the original path */ diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c old mode 100644 new mode 100755 index d23c7cd6c6f..b6ce546086d --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -546,7 +546,8 @@ PHP_METHOD(Phar, webPhar) { zval *mimeoverride = NULL, *rewrite = NULL; char *alias = NULL, *error, *index_php = NULL, *f404 = NULL, *ru = NULL; - size_t alias_len = 0, f404_len = 0, free_pathinfo = 0, ru_len = 0; + size_t alias_len = 0, f404_len = 0, free_pathinfo = 0; + int ru_len = 0; char *fname, *path_info, *mime_type = NULL, *entry, *pt; const char *basename; size_t fname_len, index_php_len = 0; @@ -729,7 +730,7 @@ PHP_METHOD(Phar, webPhar) } if (entry_len) { - phar_postprocess_ru_web(fname, fname_len, &entry, (int *)&entry_len, &ru, (int *)&ru_len TSRMLS_CC); + phar_postprocess_ru_web(fname, fname_len, &entry, &entry_len, &ru, &ru_len TSRMLS_CC); } if (!entry_len || (entry_len == 1 && entry[0] == '/')) { @@ -1999,7 +2000,7 @@ static zend_object *phar_rename_archive(phar_archive_data *phar, char *ext, zend zend_class_entry *ce; char *error; const char *pcr_error; - size_t ext_len = ext ? strlen(ext) : 0; + int ext_len = ext ? strlen(ext) : 0; int oldname_len; phar_archive_data *pphar = NULL; php_stream_statbuf ssb; @@ -2050,7 +2051,7 @@ static zend_object *phar_rename_archive(phar_archive_data *phar, char *ext, zend ext = "phar"; } } - } else if (phar_path_check(&ext, (int *)&ext_len, &pcr_error) > pcr_is_ok) { + } else if (phar_path_check(&ext, &ext_len, &pcr_error) > pcr_is_ok) { if (phar->is_data) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "data phar converted from \"%s\" has invalid extension %s", phar->fname, ext); From 61cb019e20b8af9c3cc5acdcaa925da4bea3e1ec Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 16 Dec 2014 10:06:32 +0100 Subject: [PATCH 2/3] cleanup uneeded cast --- sapi/apache2handler/sapi_apache2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c index fe200304fd6..3b7eaf22837 100644 --- a/sapi/apache2handler/sapi_apache2.c +++ b/sapi/apache2handler/sapi_apache2.c @@ -276,12 +276,12 @@ php_apache_sapi_register_variables(zval *track_vars_array TSRMLS_DC) if (!val) { val = ""; } - if (sapi_module.input_filter(PARSE_SERVER, key, &val, strlen(val), (size_t *)&new_val_len TSRMLS_CC)) { + if (sapi_module.input_filter(PARSE_SERVER, key, &val, strlen(val), &new_val_len TSRMLS_CC)) { php_register_variable_safe(key, val, new_val_len, track_vars_array TSRMLS_CC); } APR_ARRAY_FOREACH_CLOSE() - if (sapi_module.input_filter(PARSE_SERVER, "PHP_SELF", &ctx->r->uri, strlen(ctx->r->uri), (size_t *)&new_val_len TSRMLS_CC)) { + if (sapi_module.input_filter(PARSE_SERVER, "PHP_SELF", &ctx->r->uri, strlen(ctx->r->uri), &new_val_len TSRMLS_CC)) { php_register_variable_safe("PHP_SELF", ctx->r->uri, new_val_len, track_vars_array TSRMLS_CC); } } From 53c8b180c8efaab3edf7a02d39ca4e9628e1f67b Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 16 Dec 2014 10:13:58 +0100 Subject: [PATCH 3/3] fix perm again... --- ext/phar/phar_object.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 ext/phar/phar_object.c diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c old mode 100755 new mode 100644