summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2012-06-14 16:02:21 +0200
committerOndřej Surý <ondrej@sury.org>2012-06-14 16:02:21 +0200
commitf0f8d7084aec4be5c07f02f2e29c2820f85c8315 (patch)
tree02e9b39d5b0088a0e27126010c96a748d824d055
parent90ceaa9e92fadfef4c21ec0f76063c4387beb561 (diff)
downloadphp-f0f8d7084aec4be5c07f02f2e29c2820f85c8315.tar.gz
Imported Upstream version 5.4.4upstream/5.4.4
-rw-r--r--NEWS67
-rwxr-xr-xUPGRADING25
-rw-r--r--Zend/tests/traits/bug61998.phpt68
-rw-r--r--Zend/zend_compile.c19
-rw-r--r--Zend/zend_multibyte.c2
-rw-r--r--Zend/zend_opcode.c6
-rwxr-xr-xconfigure108
-rw-r--r--configure.in4
-rw-r--r--ext/curl/tests/bug61948-win32.phpt25
-rw-r--r--ext/curl/tests/bug61948.phpt5
-rw-r--r--ext/fileinfo/libmagic.patch124
-rw-r--r--ext/fileinfo/libmagic/softmagic.c25
-rw-r--r--ext/fileinfo/tests/finfo_file_002.phpt4
-rw-r--r--ext/fileinfo/tests/finfo_file_regex-win32.phpt36
-rw-r--r--ext/fileinfo/tests/finfo_file_regex.phpt32
-rw-r--r--ext/fileinfo/tests/finfo_open_error-win32.phpt46
-rw-r--r--ext/fileinfo/tests/finfo_open_error.phpt5
-rw-r--r--ext/fileinfo/tests/resources/test.awk1
-rw-r--r--ext/gmp/tests/022-win32.phpt90
-rw-r--r--ext/gmp/tests/022.phpt6
-rw-r--r--ext/gmp/tests/gmp_nextprime-win32.phpt45
-rw-r--r--ext/gmp/tests/gmp_nextprime.phpt6
-rwxr-xr-xext/intl/collator/collator_sort.c4
-rwxr-xr-xext/intl/dateformat/dateformat.c84
-rwxr-xr-xext/intl/grapheme/grapheme_string.c1
-rw-r--r--ext/intl/resourcebundle/resourcebundle_class.c24
-rw-r--r--ext/intl/tests/bug62017.phpt22
-rw-r--r--ext/intl/tests/bug62070.phpt16
-rw-r--r--ext/intl/tests/bug62081.phpt14
-rw-r--r--ext/intl/tests/bug62083.phpt12
-rw-r--r--ext/intl/tests/dateformat_calendars.phpt45
-rw-r--r--ext/intl/tests/resourcebundle_null_mandatory_args.phpt26
-rw-r--r--ext/intl/tests/resourcebundle_traversable.phpt23
-rw-r--r--ext/libxml/tests/bug61367-read.phpt5
-rw-r--r--ext/libxml/tests/bug61367-write.phpt2
-rw-r--r--ext/mysqli/tests/bug62046.phpt40
-rw-r--r--ext/mysqlnd/mysqlnd_ps.c6
-rw-r--r--ext/phar/tests/fatal_error_webphar.phpt2
-rw-r--r--ext/sockets/config.m415
-rw-r--r--ext/sockets/sockets.c3
-rw-r--r--ext/spl/spl_heap.c2
-rw-r--r--ext/spl/tests/bug62073.phpt22
-rw-r--r--ext/spl/tests/heap_005.phpt200
-rw-r--r--ext/spl/tests/heap_006.phpt200
-rw-r--r--ext/spl/tests/pqueue_001.phpt24
-rw-r--r--ext/standard/math.c20
-rw-r--r--ext/standard/proc_open.c2
-rw-r--r--ext/standard/tests/dir/dir_variation8-win32.phpt8
-rw-r--r--ext/standard/tests/file/popen_pclose_basic-win32.phpt5
-rw-r--r--ext/standard/tests/file/rename_variation13-win32.phptbin5058 -> 4692 bytes
-rw-r--r--ext/standard/tests/file/tempnam_variation7-win32.phpt4
-rw-r--r--ext/standard/tests/mail/mail_skipif.inc10
-rw-r--r--ext/standard/tests/math/bug62112.phptbin143 -> 0 bytes
-rw-r--r--ext/tidy/tests/004.phpt2
-rw-r--r--ext/xmlwriter/php_xmlwriter.c2
-rw-r--r--main/php_config.h.in3
-rw-r--r--main/php_version.h6
-rw-r--r--php.ini-development4
-rw-r--r--php.ini-production4
-rwxr-xr-xrun-tests.php5
-rw-r--r--sapi/cgi/tests/apache_request_headers.phpt4
-rw-r--r--sapi/cli/tests/bug61546.phpt11
-rw-r--r--sapi/fpm/config.m45
-rw-r--r--sapi/fpm/fpm/fastcgi.c14
-rw-r--r--sapi/fpm/fpm/fpm.c9
-rw-r--r--sapi/fpm/fpm/fpm.h33
-rw-r--r--sapi/fpm/fpm/fpm_children.c4
-rw-r--r--sapi/fpm/fpm/fpm_conf.c44
-rw-r--r--sapi/fpm/fpm/fpm_conf.h2
-rw-r--r--sapi/fpm/fpm/fpm_main.c90
-rw-r--r--sapi/fpm/fpm/fpm_process_ctl.c4
-rw-r--r--sapi/fpm/fpm/fpm_signals.c12
-rw-r--r--sapi/fpm/fpm/fpm_signals.h3
-rw-r--r--sapi/fpm/fpm/fpm_sockets.c25
-rw-r--r--sapi/fpm/fpm/fpm_sockets.h3
-rw-r--r--sapi/fpm/fpm/fpm_unix.c102
-rw-r--r--sapi/fpm/fpm/zlog.c20
-rw-r--r--sapi/fpm/fpm/zlog.h1
-rw-r--r--sapi/fpm/php-fpm.conf.in16
-rw-r--r--win32/registry.c12
80 files changed, 511 insertions, 1519 deletions
diff --git a/NEWS b/NEWS
index 898325afd..c4e627947 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,6 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-?? ??? 2012, PHP 5.4.4
-
-- COM:
- . Fixed bug #62146 com_dotnet cannot be built shared. (Johannes)
+14 Jun 2012, PHP 5.4.4
- CLI Server:
. Implemented FR #61977 (Need CLI web-server support for files with .htm &
@@ -14,17 +11,15 @@ PHP NEWS
. Fixed bug #61546 (functions related to current script failed when chdir()
in cli sapi). (Laruence, reeze.xia@gmail.com)
-- CURL:
- . Fixed bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction).
- (Laruence)
+- COM:
+ . Fixed bug #62146 com_dotnet cannot be built shared. (Johannes)
- Core:
. Fixed missing bound check in iptcparse(). (chris at chiappa.net)
. Fixed CVE-2012-2143. (Solar Designer)
+ . Fixed bug #62097 (fix for for bug #54547). (Gustavo)
. Fixed bug #62005 (unexpected behavior when incrementally assigning to a
member of a null object). (Laruence)
- . Fixed bug #61998 (Using traits with method aliases appears to result in
- crash during execution). (Dmitry)
. Fixed bug #61978 (Object recursion not detected for classes that implement
JsonSerializable). (Felipe)
. Fixed bug #61991 (long overflow in realpath_cache_get()). (Anatoliy)
@@ -48,47 +43,35 @@ PHP NEWS
set to null). (Anatoliy)
. Changed php://fd to be available only for CLI.
+- CURL:
+ . Fixed bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction).
+ (Laruence)
+
+- Intl:
+ . Fixed bug #62082 (Memory corruption in internal function
+ get_icu_disp_value_src_php()). (Gustavo)
+
+- PDO:
+ . Fixed bug #61755 (A parsing bug in the prepared statements can lead to
+ access violations). (Johannes)
+
- Phar:
. Fix bug #61065 (Secunia SA44335, CVE-2012-2386). (Rasmus)
- Pgsql:
. Added pg_escape_identifier/pg_escape_literal. (Yasuo Ohgaki)
-- Fileinfo
+- FPM
. Fixed bug #61812 (Uninitialised value used in libmagic).
(Laruence, Gustavo)
-
-- FPM
- . Fixed bug #61045 (fpm don't send error log to fastcgi clients). (fat)
- . Fixed bug #61835 (php-fpm is not allowed to run as root). (fat)
- . Fixed bug #61295 (php-fpm should not fail with commented 'user'
- for non-root start). (fat)
- . Fixed bug #61839 (Unable to cross-compile PHP with --enable-fpm). (fat)
- . Fixed bug #61026 (FPM pools can listen on the same address). (fat)
- . Fixed bug #62033 (php-fpm exits with status 0 on some failures to start).
- (fat)
- . Fixed bug #62153 (when using unix sockets, multiples FPM instances
- can be launched without errors). (fat)
- . Fixed bug #62160 (Add process.priority to set nice(2) priorities). (fat)
- . Fixed bug #61218 (FPM drops connection while receiving some binary values
- in FastCGI requests). (fat)
-
-- Intl
- . ResourceBundle constructor now accepts NULL for the first two arguments.
- (Gustavo)
- . Fixed bug #62082 (Memory corruption in internal function
- get_icu_disp_value_src_php()). (Gustavo)
+ . Fixed bug #61565 where php_stream_open_wrapper_ex tries to open a
+ directory descriptor under windows. (Anatoliy)
+ . Fixed bug #61566 failure caused by the posix lseek and read versions
+ under windows in cdf_read(). (Anatoliy)
- Libxml:
. Fixed bug #61617 (Libxml tests failed(ht is already destroyed)).
(Laruence)
-
-- Sockets:
- . Fixed bug #62025 (__ss_family was changed on AIX 5.3). (Felipe)
-
-- XML Writer:
- . Fixed bug #62064 (memory leak in the XML Writer module).
- (jean-pierre dot lozi at lip6 dot fr)
- Zlib:
. Fixed bug #61820 (using ob_gzhandler will complain about headers already
@@ -674,6 +657,14 @@ PHP NEWS
. Fixed bug #55544 (ob_gzhandler always conflicts with zlib.output_compression).
(Mike)
+08 May 2012, PHP 5.3.13
+- CGI
+ . Improve fix for PHP-CGI query string parameter vulnerability, CVE-2012-2311.
+ (Stas)
+
+03 May 2012, PHP 5.3.12
+- Fix PHP-CGI query string parameter vulnerability, CVE-2012-1823. (Rasmus)
+
26 Apr 2012, PHP 5.3.11
- Core:
diff --git a/UPGRADING b/UPGRADING
index 15da46e76..670018531 100755
--- a/UPGRADING
+++ b/UPGRADING
@@ -37,9 +37,9 @@ PHP 5.4 UPGRADE NOTES
=============================
- PHP 5.4 now checks at compile time if /dev/urandom or /dev/arandom
- are present. If either is available, session.entropy_file now
+ are present. If either is available, session.entropy_file now
defaults to that file and session.entropy_length defaults to 32.
- This provides non-blocking entropy to session id generation. If you
+ This provides non-blocking entropy to session id generation. If you
do not want extra entropy for your session ids, add:
session.entropy_file=
@@ -89,9 +89,9 @@ PHP 5.4 UPGRADE NOTES
session.upload_progress.min_freq
- Added a zend.multibyte directive as a replacement of the PHP compile time
- configuration option --enable-zend-multibyte. Now the Zend Engine always
+ configuration option --enable-zend-multibyte. Now the Zend Engine always
contains code for multibyte support, which can be enabled or disabled at
- runtime. Note: It doesn't make a lot of sense to enable this option if
+ runtime. Note: It doesn't make a lot of sense to enable this option if
ext/mbstring is not enabled, because most functionality is implemented by
mbstrings callbacks.
@@ -107,7 +107,7 @@ PHP 5.4 UPGRADE NOTES
in a stream fashion (through php://input) without having it copied in memory
multiple times.
-- Added windows_show_crt_warning. This directive shows the CRT warnings when
+- Added windows_show_crt_warning. This directive shows the CRT warnings when
enabled. These warnings were displayed by default until now. It is disabled
by default.
@@ -162,7 +162,7 @@ PHP 5.4 UPGRADE NOTES
- Non-numeric string offsets, e.g. $a['foo'] where $a is a string, now
return false on isset() and true on empty(), and produce warning if
- trying to use them. Offsets of types double, bool and null produce
+ trying to use them. Offsets of types double, bool and null produce
notice. Numeric strings ($a['2']) still work as before.
Note that offsets like '12.3' and '5 and a half' are considered
@@ -207,7 +207,7 @@ PHP 5.4 UPGRADE NOTES
- htmlentities() and htmlspecialchars() are stricter in the code units they
accept for the asian encodings. For Big5-HKSCS, the octets 0x80 and 0xFF are
- rejected. For GB2312/EUC-CN, the octets 0x8E, 0x8F, 0xA0 and 0xFF are
+ rejected. For GB2312/EUC-CN, the octets 0x8E, 0x8F, 0xA0 and 0xFF are
rejected. For SJIS, the octets 0x80, 0xA0, 0xFD, 0xFE and 0xFF are rejected,
except maybe after a valid starting byte. For EUC-JP, the octets 0xA0 and
0xFF are rejected.
@@ -233,7 +233,7 @@ PHP 5.4 UPGRADE NOTES
checks on the validity of the entities. Numerical entities are checked for a
valid range (0 to 0x10FFFF); if the flag ENT_DISALLOWED is given, the
validity of such numerical entity in the target document type is also
- checked. Named entities are checked for necessary existence in the target
+ checked. Named entities are checked for necessary existence in the target
document type instead of only checking whether they were constituted by
alphanumeric characters.
@@ -341,8 +341,6 @@ PHP 5.4 UPGRADE NOTES
- Since 5.4.4, "php://fd" stream syntax is available only in CLI build.
-- Since 5.4.5, resourcebundle_create() accepts null for the first two arguments.
-
==============================
5. Changes to existing classes
==============================
@@ -375,9 +373,6 @@ PHP 5.4 UPGRADE NOTES
- FilesystemIterator, GlobIterator and (Recursive)DirectoryIterator now use
the default stream context.
-- Since 5.4.5, the constructor of ResourceBundle accepts NULL for the first two
- arguments.
-
===========================
7. Deprecated Functionality
===========================
@@ -436,7 +431,7 @@ d. Removed hash algorithms
a. Extensions no longer maintained
- ext/sqlite is no longer part of the base distribution and has been moved
- to PECL. Use sqlite3 or PDO_SQLITE instead.
+ to PECL. Use sqlite3 or PDO_SQLITE instead.
b. Extensions with changed behavior
@@ -490,7 +485,7 @@ b. Extensions with changed behavior
===========================
- A REQUEST_TIME_FLOAT value returns a floating point number indicating the
- time with microsecond precision. All SAPIs providing this value should be
+ time with microsecond precision. All SAPIs providing this value should be
returning float and not time_t.
- apache_child_terminate(), getallheaders(), apache_request_headers()
diff --git a/Zend/tests/traits/bug61998.phpt b/Zend/tests/traits/bug61998.phpt
deleted file mode 100644
index 612caa066..000000000
--- a/Zend/tests/traits/bug61998.phpt
+++ /dev/null
@@ -1,68 +0,0 @@
---TEST--
-Bug #61998 (Using traits with method aliases appears to result in crash during execution)
---FILE--
-<?php
-class Foo {
- use T1 {
- func as newFunc;
- }
-
- public function func() {
- echo "From Foo\n";
- }
-}
-
-trait T1 {
- public function func() {
- echo "From T1\n";
- }
-}
-
-class Bar {
- public function func() {
- echo "From Bar\n";
- }
- public function func2() {
- echo "From Bar\n";
- }
- public function func3() {
- echo "From Bar\n";
- }
- use T1 {
- func as newFunc;
- func as func2;
- }
- use T2 {
- func2 as newFunc2;
- func2 as newFunc3;
- func2 as func3;
- }
-}
-
-trait T2 {
- public function func2() {
- echo "From T2\n";
- }
-}
-
-$f = new Foo();
-
-$f->newFunc(); //from T1
-$f->func(); //from Foo
-
-$b = new Bar();
-$b->newFunc(); //from T1
-$b->func(); //from Bar
-$b->func2(); //from Bar
-$b->newFunc2(); //from T2
-$b->newFunc3(); //from T2
-$b->func3(); //from Bar
---EXPECTF--
-From T1
-From Foo
-From T1
-From Bar
-From Bar
-From T2
-From T2
-From Bar
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 28f98249d..602b60041 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3619,7 +3619,6 @@ ZEND_API void zend_do_implement_trait(zend_class_entry *ce, zend_class_entry *tr
}
}
ce->traits[ce->num_traits++] = trait;
- trait->refcount++;
}
}
/* }}} */
@@ -3871,8 +3870,8 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
fn_copy = *fn;
function_add_ref(&fn_copy);
/* this function_name is never destroyed, because its refcount
- greater than 1 and classes are always destoyed before the
- traits they use */
+ greater than 1, classes are always destoyed in reverse order
+ and trait is declared early than this class */
fn_copy.common.function_name = aliases[i]->alias;
/* if it is 0, no modifieres has been changed */
@@ -4077,14 +4076,14 @@ static void zend_do_traits_method_binding(zend_class_entry *ce TSRMLS_DC) /* {{{
size_t i;
/* prepare copies of trait function tables for combination */
- function_tables = emalloc(sizeof(HashTable*) * ce->num_traits);
- resulting_table = (HashTable *)emalloc(sizeof(HashTable));
+ function_tables = malloc(sizeof(HashTable*) * ce->num_traits);
+ resulting_table = (HashTable *) malloc(sizeof(HashTable));
/* TODO: revisit this start size, may be its not optimal */
- zend_hash_init_ex(resulting_table, 10, NULL, NULL, 0, 0);
+ zend_hash_init_ex(resulting_table, 10, NULL, NULL, 1, 0);
for (i = 0; i < ce->num_traits; i++) {
- function_tables[i] = (HashTable *)emalloc(sizeof(HashTable));
+ function_tables[i] = (HashTable *) malloc(sizeof(HashTable));
zend_hash_init_ex(function_tables[i], ce->traits[i]->function_table.nNumOfElements, NULL, NULL, 1, 0);
if (ce->trait_precedences) {
@@ -4117,14 +4116,14 @@ static void zend_do_traits_method_binding(zend_class_entry *ce TSRMLS_DC) /* {{{
for (i = 0; i < ce->num_traits; i++) {
/* zend_hash_destroy(function_tables[i]); */
zend_hash_graceful_destroy(function_tables[i]);
- efree(function_tables[i]);
+ free(function_tables[i]);
}
- efree(function_tables);
+ free(function_tables);
/* free temporary resulting table */
/* zend_hash_destroy(resulting_table); */
zend_hash_graceful_destroy(resulting_table);
- efree(resulting_table);
+ free(resulting_table);
}
/* }}} */
diff --git a/Zend/zend_multibyte.c b/Zend/zend_multibyte.c
index 379f50b01..9149fdcf0 100644
--- a/Zend/zend_multibyte.c
+++ b/Zend/zend_multibyte.c
@@ -168,7 +168,7 @@ ZEND_API const zend_encoding *zend_multibyte_get_script_encoding(TSRMLS_D)
ZEND_API int zend_multibyte_set_script_encoding(const zend_encoding **encoding_list, size_t encoding_list_size TSRMLS_DC)
{
if (CG(script_encoding_list)) {
- free(CG(script_encoding_list));
+ efree(CG(script_encoding_list));
}
CG(script_encoding_list) = encoding_list;
CG(script_encoding_list_size) = encoding_list_size;
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index 19fd71e76..65fa85185 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -215,12 +215,6 @@ ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC)
void _destroy_zend_class_traits_info(zend_class_entry *ce)
{
if (ce->num_traits > 0 && ce->traits) {
- size_t i;
- for (i = 0; i < ce->num_traits; i++) {
- if (ce->traits[i]) {
- destroy_zend_class(&ce->traits[i]);
- }
- }
efree(ce->traits);
}
diff --git a/configure b/configure
index e2284688f..f0b2e87b7 100755
--- a/configure
+++ b/configure
@@ -3636,8 +3636,8 @@ ac_config_headers="$ac_config_headers main/php_config.h"
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=4
-PHP_RELEASE_VERSION=5
-PHP_EXTRA_VERSION="-dev"
+PHP_RELEASE_VERSION=4
+PHP_EXTRA_VERSION=""
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr $PHP_MAJOR_VERSION \* 10000 + $PHP_MINOR_VERSION \* 100 + $PHP_RELEASE_VERSION`
@@ -11598,18 +11598,6 @@ fi
done
- for ac_header in sysexits.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sysexits.h" "ac_cv_header_sysexits_h" "$ac_includes_default"
-if test "x$ac_cv_header_sysexits_h" = x""yes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYSEXITS_H 1
-_ACEOF
-
-fi
-
-done
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for prctl" >&5
@@ -11814,10 +11802,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
$as_echo_n "checking whether ptrace works... " >&6; }
if test "$cross_compiling" = yes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped (cross compiling)" >&5
-$as_echo "skipped (cross compiling)" >&6; }
-
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11972,10 +11960,10 @@ $as_echo "#define HAVE_MACH_VM_READ 1" >>confdefs.h
$as_echo_n "checking for proc mem file... " >&6; }
if test "$cross_compiling" = yes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped (cross compiling)" >&5
-$as_echo "skipped (cross compiling)" >&6; }
-
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -86497,44 +86485,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
$as_echo "#define HAVE_SOCKETS 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for field ss_family in struct sockaddr_storage" >&5
-$as_echo_n "checking for field ss_family in struct sockaddr_storage... " >&6; }
-if test "${ac_cv_ss_family+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netdb.h>
-
-int
-main ()
-{
-struct sockaddr_storage sa_store; sa_store.ss_family = AF_INET6;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_ss_family=yes
-else
- ac_cv_ss_family=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ss_family" >&5
-$as_echo "$ac_cv_ss_family" >&6; }
-
- if test "$ac_cv_ss_family" = yes; then
-
-$as_echo "#define HAVE_SA_SS_FAMILY 1" >>confdefs.h
-
- fi
-
ext_builddir=ext/sockets
ext_srcdir=$abs_srcdir/ext/sockets
@@ -103813,7 +103763,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 103816 "configure"
+#line 103766 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -105725,7 +105675,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 105728 "configure"' > conftest.$ac_ext
+ echo '#line 105678 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -107117,7 +107067,7 @@ else
LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
cat > conftest.$ac_ext <<EOF
-#line 107120 "configure"
+#line 107070 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -107275,11 +107225,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:107278: $lt_compile\"" >&5)
+ (eval echo "\"configure:107228: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:107282: \$? = $ac_status" >&5
+ echo "configure:107232: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -107573,11 +107523,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:107576: $lt_compile\"" >&5)
+ (eval echo "\"configure:107526: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:107580: \$? = $ac_status" >&5
+ echo "configure:107530: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -107677,11 +107627,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:107680: $lt_compile\"" >&5)
+ (eval echo "\"configure:107630: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "configure:107684: \$? = $ac_status" >&5
+ echo "configure:107634: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -108141,7 +108091,7 @@ _LT_EOF
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 108144 "configure"
+#line 108094 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -108183,7 +108133,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 108186 "configure"
+#line 108136 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -109708,7 +109658,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 109711 "configure"
+#line 109661 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -109808,7 +109758,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 109811 "configure"
+#line 109761 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -110873,7 +110823,7 @@ case $host_os in
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 110876 "configure"
+#line 110826 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -110916,7 +110866,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 110919 "configure"
+#line 110869 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -112168,11 +112118,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:112171: $lt_compile\"" >&5)
+ (eval echo "\"configure:112121: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:112175: \$? = $ac_status" >&5
+ echo "configure:112125: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -112272,11 +112222,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:112275: $lt_compile\"" >&5)
+ (eval echo "\"configure:112225: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "configure:112279: \$? = $ac_status" >&5
+ echo "configure:112229: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
diff --git a/configure.in b/configure.in
index 1e8068992..32ebde125 100644
--- a/configure.in
+++ b/configure.in
@@ -119,8 +119,8 @@ int zend_sprintf(char *buffer, const char *format, ...);
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=4
-PHP_RELEASE_VERSION=5
-PHP_EXTRA_VERSION="-dev"
+PHP_RELEASE_VERSION=4
+PHP_EXTRA_VERSION=""
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff --git a/ext/curl/tests/bug61948-win32.phpt b/ext/curl/tests/bug61948-win32.phpt
deleted file mode 100644
index dc86526b7..000000000
--- a/ext/curl/tests/bug61948-win32.phpt
+++ /dev/null
@@ -1,25 +0,0 @@
---TEST--
-Bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction)
---SKIPIF--
-<?php if (!extension_loaded("curl")) print "skip";
-if(substr(PHP_OS, 0, 3) != 'WIN' )
- die("skip Not Valid for Linux");
-?>
---INI--
-open_basedir="c:/tmp"
---FILE--
-<?php
- $ch = curl_init();
- var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, ""));
- var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "c:/tmp/foo"));
- var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "c:/xxx/bar"));
- curl_close($ch);
-?>
---EXPECTF--
-%a
-
-Warning: curl_setopt(): open_basedir restriction in effect. File(c:/tmp/foo) is not within the allowed path(s): (c:/tmp) in %sbug61948-win32.php on line %d
-bool(false)
-
-Warning: curl_setopt(): open_basedir restriction in effect. File(c:/xxx/bar) is not within the allowed path(s): (c:/tmp) in %sbug61948-win32.php on line %d
-bool(false)
diff --git a/ext/curl/tests/bug61948.phpt b/ext/curl/tests/bug61948.phpt
index 23bbda7d5..a03fc3b60 100644
--- a/ext/curl/tests/bug61948.phpt
+++ b/ext/curl/tests/bug61948.phpt
@@ -1,10 +1,7 @@
--TEST--
Bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction)
--SKIPIF--
-<?php if (!extension_loaded("curl")) print "skip";
-if(substr(PHP_OS, 0, 3) == 'WIN' )
- die("skip Not Valid for Windows");
-?>
+<?php if (!extension_loaded("curl")) print "skip"; ?>
--INI--
open_basedir="/tmp"
--FILE--
diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch
index 48a02360b..baeac1dc1 100644
--- a/ext/fileinfo/libmagic.patch
+++ b/ext/fileinfo/libmagic.patch
@@ -1,6 +1,6 @@
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
---- libmagic.orig/apprentice.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/apprentice.c 2012-04-22 18:57:16.215980866 +0200
+--- libmagic.orig/apprentice.c 2012-04-22 19:30:43.182305355 +0800
++++ libmagic/apprentice.c 2012-04-22 19:28:57.346309536 +0800
@@ -29,6 +29,8 @@
* apprentice - make one pass through /etc/magic, learning its secrets.
*/
@@ -729,8 +729,8 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
m->str_flags = swap4(m->str_flags);
}
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
---- libmagic.orig/ascmagic.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/ascmagic.c 2012-04-22 18:57:16.215980866 +0200
+--- libmagic.orig/ascmagic.c 2012-04-22 19:30:43.182305355 +0800
++++ libmagic/ascmagic.c 2012-04-22 19:28:57.330309533 +0800
@@ -139,10 +139,8 @@
/* malloc size is a conservative overestimate; could be
improved, or at least realloced after conversion. */
@@ -755,8 +755,8 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
return rv;
}
diff -u libmagic.orig/cdf.c libmagic/cdf.c
---- libmagic.orig/cdf.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/cdf.c 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/cdf.c 2012-04-22 19:30:43.182305355 +0800
++++ libmagic/cdf.c 2012-04-22 19:28:57.370309531 +0800
@@ -43,7 +43,17 @@
#include <err.h>
#endif
@@ -819,8 +819,8 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c
(void)fprintf(stderr, "timestamp %s\n", buf);
} else {
diff -u libmagic.orig/cdf.h libmagic/cdf.h
---- libmagic.orig/cdf.h 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/cdf.h 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/cdf.h 2012-04-22 19:30:43.182305355 +0800
++++ libmagic/cdf.h 2012-04-22 19:28:57.370309531 +0800
@@ -35,7 +35,7 @@
#ifndef _H_CDF_
#define _H_CDF_
@@ -857,8 +857,8 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h
void cdf_swap_header(cdf_header_t *);
void cdf_unpack_header(cdf_header_t *, char *);
diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
---- libmagic.orig/cdf_time.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/cdf_time.c 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/cdf_time.c 2012-04-22 19:30:43.182305355 +0800
++++ libmagic/cdf_time.c 2012-04-22 19:28:57.326309537 +0800
@@ -96,7 +96,7 @@
}
@@ -916,8 +916,8 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
static const char *ref = "Sat Apr 23 01:30:00 1977";
char *p, *q;
diff -u libmagic.orig/compress.c libmagic/compress.c
---- libmagic.orig/compress.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/compress.c 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/compress.c 2012-04-22 19:30:43.182305355 +0800
++++ libmagic/compress.c 2012-04-22 19:28:57.314309548 +0800
@@ -32,6 +32,7 @@
* uncompress(method, old, n, newch) - uncompress old into new,
* using method, return sizeof new
@@ -1079,8 +1079,8 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
-#endif
+#endif /* if PHP_FILEINFO_UNCOMPRESS */
diff -u libmagic.orig/file.h libmagic/file.h
---- libmagic.orig/file.h 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/file.h 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/file.h 2012-04-22 19:30:43.186305188 +0800
++++ libmagic/file.h 2012-04-22 19:49:58.922256776 +0800
@@ -33,11 +33,9 @@
#ifndef __file_h__
#define __file_h__
@@ -1252,8 +1252,8 @@ diff -u libmagic.orig/file.h libmagic/file.h
+
#endif /* __file_h__ */
diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
---- libmagic.orig/fsmagic.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/fsmagic.c 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/fsmagic.c 2012-04-22 19:30:43.186305188 +0800
++++ libmagic/fsmagic.c 2012-04-22 19:28:57.298309521 +0800
@@ -59,27 +59,21 @@
# define minor(dev) ((dev) & 0xff)
#endif
@@ -1577,8 +1577,8 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
/*
diff -u libmagic.orig/funcs.c libmagic/funcs.c
---- libmagic.orig/funcs.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/funcs.c 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/funcs.c 2012-04-22 19:30:43.186305188 +0800
++++ libmagic/funcs.c 2012-04-22 19:28:57.370309531 +0800
@@ -41,52 +41,42 @@
#if defined(HAVE_WCTYPE_H)
#include <wctype.h>
@@ -1872,9 +1872,11 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
+ return rep_cnt;
}
+
+Only in libmagic.orig: funcs.c.orig
+Only in libmagic.orig: funcs.c.rej
diff -u libmagic.orig/magic.c libmagic/magic.c
---- libmagic.orig/magic.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/magic.c 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/magic.c 2012-04-22 19:30:43.186305188 +0800
++++ libmagic/magic.c 2012-04-22 19:28:57.370309531 +0800
@@ -25,11 +25,6 @@
* SUCH DAMAGE.
*/
@@ -2251,8 +2253,8 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
public const char *
magic_error(struct magic_set *ms)
diff -u libmagic.orig/magic.h libmagic/magic.h
---- libmagic.orig/magic.h 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/magic.h 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/magic.h 2012-04-22 19:30:43.190305058 +0800
++++ libmagic/magic.h 2012-04-22 19:28:57.326309537 +0800
@@ -85,6 +85,7 @@
const char *magic_getpath(const char *, int);
@@ -2270,8 +2272,8 @@ diff -u libmagic.orig/magic.h libmagic/magic.h
int magic_errno(magic_t);
diff -u libmagic.orig/print.c libmagic/print.c
---- libmagic.orig/print.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/print.c 2012-05-29 14:34:03.770376387 +0200
+--- libmagic.orig/print.c 2012-04-22 19:30:43.190305058 +0800
++++ libmagic/print.c 2012-04-22 19:28:57.326309537 +0800
@@ -29,6 +29,9 @@
* print.c - debugging printout routines
*/
@@ -2465,8 +2467,8 @@ diff -u libmagic.orig/print.c libmagic/print.c
protected const char *
diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
---- libmagic.orig/readcdf.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/readcdf.c 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/readcdf.c 2012-04-22 19:30:43.190305058 +0800
++++ libmagic/readcdf.c 2012-04-22 19:28:57.326309537 +0800
@@ -30,7 +30,11 @@
#endif
@@ -2513,8 +2515,8 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
if ((ec = strchr(c, '\n')) != NULL)
*ec = '\0';
diff -u libmagic.orig/readelf.c libmagic/readelf.c
---- libmagic.orig/readelf.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/readelf.c 2012-04-22 18:57:16.219978162 +0200
+--- libmagic.orig/readelf.c 2012-04-22 19:30:43.190305058 +0800
++++ libmagic/readelf.c 2012-04-22 19:28:57.378309534 +0800
@@ -49,7 +49,7 @@
off_t, int *, int);
private int doshn(struct magic_set *, int, int, int, off_t, int, size_t,
@@ -2670,8 +2672,8 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c
if (fstat(fd, &st) == -1) {
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
---- libmagic.orig/softmagic.c 2012-05-29 14:40:41.710960045 +0200
-+++ libmagic/softmagic.c 2012-05-29 14:34:31.900417647 +0200
+--- libmagic.orig/softmagic.c 2012-04-22 19:30:43.194304945 +0800
++++ libmagic/softmagic.c 2012-04-22 19:28:57.286309597 +0800
@@ -41,6 +41,11 @@
#include <stdlib.h>
#include <time.h>
@@ -2858,7 +2860,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
}
}
-@@ -1669,6 +1642,42 @@
+@@ -1669,6 +1642,65 @@
return file_strncmp(a, b, len, flags);
}
@@ -2874,6 +2876,29 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
+
+ for (i=0; i<Z_STRLEN_P(pattern); i++, j++) {
+ switch (Z_STRVAL_P(pattern)[i]) {
++ case '?':
++ t[j] = '.';
++ break;
++ case '*':
++ t[j++] = '.';
++ t[j] = '*';
++ break;
++ case '.':
++ t[j++] = '\\';
++ t[j] = '.';
++ break;
++ case '\\':
++ t[j++] = '\\';
++ t[j] = '\\';
++ break;
++ case '(':
++ t[j++] = '\\';
++ t[j] = '(';
++ break;
++ case ')':
++ t[j++] = '\\';
++ t[j] = ')';
++ break;
+ case '~':
+ t[j++] = '\\';
+ t[j] = '~';
@@ -2901,7 +2926,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
private int
magiccheck(struct magic_set *ms, struct magic *m)
{
-@@ -1825,67 +1834,163 @@
+@@ -1825,67 +1857,163 @@
break;
}
case FILE_REGEX: {
@@ -2912,23 +2937,6 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
- if (ms->search.s == NULL)
- return 0;
-
-- l = 0;
-- rc = regcomp(&rx, m->value.s,
-- REG_EXTENDED|REG_NEWLINE|
-- ((m->str_flags & STRING_IGNORE_CASE) ? REG_ICASE : 0));
-- if (rc) {
-- (void)regerror(rc, &rx, errmsg, sizeof(errmsg));
-- file_magerror(ms, "regex error %d, (%s)",
-- rc, errmsg);
-- v = (uint64_t)-1;
-- }
-- else {
-- regmatch_t pmatch[1];
--#ifndef REG_STARTEND
--#define REG_STARTEND 0
-- size_t l = ms->search.s_len - 1;
-- char c = ms->search.s[l];
-- ((char *)(intptr_t)ms->search.s)[l] = '\0';
+ zval *pattern;
+ int options = 0;
+ pcre_cache_entry *pce;
@@ -2945,7 +2953,23 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
+
+ convert_libmagic_pattern(pattern, options);
+
-+ l = v = 0;
+ l = 0;
+- rc = regcomp(&rx, m->value.s,
+- REG_EXTENDED|REG_NEWLINE|
+- ((m->str_flags & STRING_IGNORE_CASE) ? REG_ICASE : 0));
+- if (rc) {
+- (void)regerror(rc, &rx, errmsg, sizeof(errmsg));
+- file_magerror(ms, "regex error %d, (%s)",
+- rc, errmsg);
+- v = (uint64_t)-1;
+- }
+- else {
+- regmatch_t pmatch[1];
+-#ifndef REG_STARTEND
+-#define REG_STARTEND 0
+- size_t l = ms->search.s_len - 1;
+- char c = ms->search.s[l];
+- ((char *)(intptr_t)ms->search.s)[l] = '\0';
+#if (PHP_MAJOR_VERSION < 6)
+ if ((pce = pcre_get_compiled_regex_cache(Z_STRVAL_P(pattern), Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
#else
diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c
index f9c2836dd..648f64169 100644
--- a/ext/fileinfo/libmagic/softmagic.c
+++ b/ext/fileinfo/libmagic/softmagic.c
@@ -1654,6 +1654,29 @@ convert_libmagic_pattern(zval *pattern, int options)
for (i=0; i<Z_STRLEN_P(pattern); i++, j++) {
switch (Z_STRVAL_P(pattern)[i]) {
+ case '?':
+ t[j] = '.';
+ break;
+ case '*':
+ t[j++] = '.';
+ t[j] = '*';
+ break;
+ case '.':
+ t[j++] = '\\';
+ t[j] = '.';
+ break;
+ case '\\':
+ t[j++] = '\\';
+ t[j] = '\\';
+ break;
+ case '(':
+ t[j++] = '\\';
+ t[j] = '(';
+ break;
+ case ')':
+ t[j++] = '\\';
+ t[j] = ')';
+ break;
case '~':
t[j++] = '\\';
t[j] = '~';
@@ -1850,7 +1873,7 @@ magiccheck(struct magic_set *ms, struct magic *m)
convert_libmagic_pattern(pattern, options);
- l = v = 0;
+ l = 0;
#if (PHP_MAJOR_VERSION < 6)
if ((pce = pcre_get_compiled_regex_cache(Z_STRVAL_P(pattern), Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
#else
diff --git a/ext/fileinfo/tests/finfo_file_002.phpt b/ext/fileinfo/tests/finfo_file_002.phpt
index 3593233c3..9ed19a976 100644
--- a/ext/fileinfo/tests/finfo_file_002.phpt
+++ b/ext/fileinfo/tests/finfo_file_002.phpt
@@ -18,11 +18,9 @@ ksort($results);
var_dump($results);
?>
--EXPECTF--
-array(7) {
+array(6) {
["%s/resources/dir.zip"]=>
string(15) "application/zip"
- ["%s/resources/test.awk"]=>
- string(10) "text/plain"
["%s/resources/test.bmp"]=>
string(14) "image/x-ms-bmp"
["%s/resources/test.gif"]=>
diff --git a/ext/fileinfo/tests/finfo_file_regex-win32.phpt b/ext/fileinfo/tests/finfo_file_regex-win32.phpt
deleted file mode 100644
index 1eda48c4d..000000000
--- a/ext/fileinfo/tests/finfo_file_regex-win32.phpt
+++ /dev/null
@@ -1,36 +0,0 @@
---TEST--
-Test finfo_file() function : regex rules
---SKIPIF--
-<?php require_once(dirname(__FILE__) . '/skipif.inc');
-if (substr(PHP_OS, 0, 3) != 'WIN') {
- die('skip.. only for Windows');
-}
-?>
---FILE--
-<?php
-/**
- * Works with the unix file command:
- * $ file -m magic resources/test.awk
- * resources/test.awk: awk script, ASCII text
- */
-$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
-$finfo = finfo_open( FILEINFO_MIME, $magicFile );
-
-echo "*** Testing finfo_file() : regex rules ***\n";
-
-// Calling finfo_file() with all possible arguments
-$file = __DIR__ . '/resources/test.awk';
-var_dump( finfo_file( $finfo, $file ) );
-var_dump( finfo_file( $finfo, $file, FILEINFO_CONTINUE ) );
-
-// Windows uses libfileinfo 1.0.5-dev
-// this may be causing the slightly different output from the first
-// finfo_file() call
-
-?>
-===DONE===
---EXPECTF--
-*** Testing finfo_file() : regex rules ***
-string(10) "text/plain"
-string(22) "awk script, ASCII text"
-===DONE===
diff --git a/ext/fileinfo/tests/finfo_file_regex.phpt b/ext/fileinfo/tests/finfo_file_regex.phpt
deleted file mode 100644
index ee4c8b0b7..000000000
--- a/ext/fileinfo/tests/finfo_file_regex.phpt
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-Test finfo_file() function : regex rules
---SKIPIF--
-<?php require_once(dirname(__FILE__) . '/skipif.inc');
-if (substr(PHP_OS, 0, 3) == 'WIN') {
- die('skip.. only for Non Windows Systems');
-}
-?>
---FILE--
-<?php
-/**
- * Works with the unix file command:
- * $ file -m magic resources/test.awk
- * resources/test.awk: awk script, ASCII text
- */
-$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
-$finfo = finfo_open( FILEINFO_MIME, $magicFile );
-
-echo "*** Testing finfo_file() : regex rules ***\n";
-
-// Calling finfo_file() with all possible arguments
-$file = __DIR__ . '/resources/test.awk';
-var_dump( finfo_file( $finfo, $file ) );
-var_dump( finfo_file( $finfo, $file, FILEINFO_CONTINUE ) );
-
-?>
-===DONE===
---EXPECTF--
-*** Testing finfo_file() : regex rules ***
-string(28) "text/plain; charset=us-ascii"
-string(22) "awk script, ASCII text"
-===DONE===
diff --git a/ext/fileinfo/tests/finfo_open_error-win32.phpt b/ext/fileinfo/tests/finfo_open_error-win32.phpt
deleted file mode 100644
index bd50327b2..000000000
--- a/ext/fileinfo/tests/finfo_open_error-win32.phpt
+++ /dev/null
@@ -1,46 +0,0 @@
---TEST--
-Test finfo_open() function : error functionality
---SKIPIF--
-<?php require_once(dirname(__FILE__) . '/skipif.inc');
-if(substr(PHP_OS, 0, 3) != 'WIN' )
- die("skip Not Valid for Linux");
-?>
---FILE--
-<?php
-/* Prototype : resource finfo_open([int options [, string arg]])
- * Description: Create a new fileinfo resource.
- * Source code: ext/fileinfo/fileinfo.c
- * Alias to functions:
- */
-
-$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
-
-echo "*** Testing finfo_open() : error functionality ***\n";
-
-var_dump( finfo_open( FILEINFO_MIME, 'foobarfile' ) );
-var_dump( finfo_open( array(), $magicFile ) );
-var_dump( finfo_open( FILEINFO_MIME, $magicFile, 'extraArg' ) );
-var_dump( finfo_open( PHP_INT_MAX - 1, $magicFile ) );
-var_dump( finfo_open( 'foobar' ) );
-
-var_dump( new finfo('foobar') );
-
-?>
-===DONE===
---EXPECTF--
-*** Testing finfo_open() : error functionality ***
-bool(false)
-
-Warning: finfo_open() expects parameter 1 to be long, array given in %s on line %d
-bool(false)
-
-Warning: finfo_open() expects at most 2 parameters, 3 given in %s on line %d
-bool(false)
-resource(%d) of type (file_info)
-
-Warning: finfo_open() expects parameter 1 to be long, %unicode_string_optional% given in %s on line %d
-bool(false)
-
-Warning: finfo::finfo() expects parameter 1 to be long, %unicode_string_optional% given in %s on line %d
-NULL
-===DONE===
diff --git a/ext/fileinfo/tests/finfo_open_error.phpt b/ext/fileinfo/tests/finfo_open_error.phpt
index 5d1eff597..19ae7a601 100644
--- a/ext/fileinfo/tests/finfo_open_error.phpt
+++ b/ext/fileinfo/tests/finfo_open_error.phpt
@@ -1,10 +1,7 @@
--TEST--
Test finfo_open() function : error functionality
--SKIPIF--
-<?php require_once(dirname(__FILE__) . '/skipif.inc');
-if(substr(PHP_OS, 0, 3) == 'WIN' )
- die("skip Not Valid for Windows");
-?>
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php
/* Prototype : resource finfo_open([int options [, string arg]])
diff --git a/ext/fileinfo/tests/resources/test.awk b/ext/fileinfo/tests/resources/test.awk
deleted file mode 100644
index e000d5041..000000000
--- a/ext/fileinfo/tests/resources/test.awk
+++ /dev/null
@@ -1 +0,0 @@
-BEGIN { print "START" }
diff --git a/ext/gmp/tests/022-win32.phpt b/ext/gmp/tests/022-win32.phpt
deleted file mode 100644
index 7abb0e82b..000000000
--- a/ext/gmp/tests/022-win32.phpt
+++ /dev/null
@@ -1,90 +0,0 @@
---TEST--
-gmp_gcdext() basic tests
---SKIPIF--
-<?php if (!extension_loaded("gmp")) print "skip";
-if(substr(PHP_OS, 0, 3) != 'WIN' ) {
- die('skip windows only test');
-}
-?>
---FILE--
-<?php
-
-$n = gmp_init("34293864345");
-$n1 = gmp_init("23434293864345");
-
-$a = array(
- array(123,45),
- array(4341,9734),
- array(23487,333),
- array(-234234,-123123),
- array(-100,-2234),
- array(345,"34587345"),
- array(345,"0"),
- array("345556456",345873),
- array("34545345556456","323432445873"),
- array($n, $n1),
- );
-
-foreach ($a as $val) {
- $r = gmp_gcdext($val[0],$val[1]);
- var_dump(gmp_strval($r['g']));
- var_dump(gmp_strval($r['s']));
- var_dump(gmp_strval($r['t']));
-}
-
-var_dump(gmp_gcdext($val[0],array()));
-var_dump(gmp_gcdext(array(),array()));
-var_dump(gmp_gcdext(array(),array(),1));
-var_dump(gmp_gcdext(array()));
-var_dump(gmp_gcdext());
-
-echo "Done\n";
-?>
---EXPECTF--
-string(1) "3"
-string(2) "41"
-string(4) "-112"
-string(1) "1"
-string(4) "-805"
-string(3) "359"
-string(1) "3"
-string(2) "32"
-string(5) "-2257"
-string(4) "3003"
-string(3) "-10"
-string(2) "19"
-string(1) "2"
-string(2) "67"
-string(2) "-3"
-string(2) "15"
-string(7) "-601519"
-string(1) "6"
-string(3) "345"
-string(1) "1"
-string(1) "0"
-string(1) "1"
-string(5) "84319"
-string(9) "-84241831"
-string(1) "1"
-string(12) "167180205823"
-string(15) "-17856272782919"
-string(3) "195"
-string(15) "-23387298979862"
-string(11) "34225091793"
-
-Warning: gmp_gcdext(): Unable to convert variable to GMP - wrong type in %s on line %d
-bool(false)
-
-Warning: gmp_gcdext(): Unable to convert variable to GMP - wrong type in %s on line %d
-bool(false)
-
-Warning: gmp_gcdext() expects exactly 2 parameters, 3 given in %s on line %d
-NULL
-
-Warning: gmp_gcdext() expects exactly 2 parameters, 1 given in %s on line %d
-NULL
-
-Warning: gmp_gcdext() expects exactly 2 parameters, 0 given in %s on line %d
-NULL
-Done
-
diff --git a/ext/gmp/tests/022.phpt b/ext/gmp/tests/022.phpt
index f699e8283..805c9b675 100644
--- a/ext/gmp/tests/022.phpt
+++ b/ext/gmp/tests/022.phpt
@@ -1,11 +1,7 @@
--TEST--
gmp_gcdext() basic tests
--SKIPIF--
-<?php if (!extension_loaded("gmp")) print "skip";
-if (substr(PHP_OS, 0, 3) == 'WIN') {
- die('skip.. only for Non Windows Systems');
-}
-?>
+<?php if (!extension_loaded("gmp")) print "skip"; ?>
--FILE--
<?php
diff --git a/ext/gmp/tests/gmp_nextprime-win32.phpt b/ext/gmp/tests/gmp_nextprime-win32.phpt
deleted file mode 100644
index e725315a1..000000000
--- a/ext/gmp/tests/gmp_nextprime-win32.phpt
+++ /dev/null
@@ -1,45 +0,0 @@
---TEST--
-gmp_nextprime()
---SKIPIF--
-<?php if (!extension_loaded("gmp")) print "skip";
-if(substr(PHP_OS, 0, 3) != 'WIN' ) {
- die('skip windows only test');
-}
-?>
---FILE--
-<?php
-
-$n = gmp_nextprime(-1);
-var_dump(gmp_strval($n));
-$n = gmp_nextprime(0);
-var_dump(gmp_strval($n));
-$n = gmp_nextprime(-1000);
-var_dump(gmp_strval($n));
-$n = gmp_nextprime(1000);
-var_dump(gmp_strval($n));
-$n = gmp_nextprime(100000);
-var_dump(gmp_strval($n));
-$n = gmp_nextprime(array());
-var_dump(gmp_strval($n));
-$n = gmp_nextprime("");
-var_dump(gmp_strval($n));
-$n = gmp_nextprime(new stdclass());
-var_dump(gmp_strval($n));
-
-echo "Done\n";
-?>
---EXPECTF--
-string(1) "2"
-string(1) "2"
-string(4) "-997"
-string(4) "1009"
-string(6) "100003"
-
-Warning: gmp_nextprime(): Unable to convert variable to GMP - wrong type in %s on line %d
-string(1) "0"
-string(1) "0"
-
-Warning: gmp_nextprime(): Unable to convert variable to GMP - wrong type in %s on line %d
-string(1) "0"
-Done
-
diff --git a/ext/gmp/tests/gmp_nextprime.phpt b/ext/gmp/tests/gmp_nextprime.phpt
index 623ccbed0..65506ce13 100644
--- a/ext/gmp/tests/gmp_nextprime.phpt
+++ b/ext/gmp/tests/gmp_nextprime.phpt
@@ -1,11 +1,7 @@
--TEST--
gmp_nextprime()
--SKIPIF--
-<?php if (!extension_loaded("gmp")) print "skip";
-if (substr(PHP_OS, 0, 3) == 'WIN') {
- die('skip.. only for Non Windows Systems');
-}
-?>
+<?php if (!extension_loaded("gmp")) print "skip"; ?>
--FILE--
<?php
diff --git a/ext/intl/collator/collator_sort.c b/ext/intl/collator/collator_sort.c
index 0785111c9..a871c90a8 100755
--- a/ext/intl/collator/collator_sort.c
+++ b/ext/intl/collator/collator_sort.c
@@ -594,8 +594,6 @@ PHP_FUNCTION( collator_get_sort_key )
RETURN_FALSE;
}
- /* ucol_getSortKey is exception in that the key length includes the
- * NUL terminator*/
key_len = ucol_getSortKey(co->ucoll, ustr, ustr_len, key, 0);
if(!key_len) {
efree( ustr );
@@ -607,7 +605,7 @@ PHP_FUNCTION( collator_get_sort_key )
if(!key_len) {
RETURN_FALSE;
}
- RETURN_STRINGL((char *)key, key_len - 1, 0);
+ RETURN_STRINGL((char *)key, key_len, 0);
}
/* }}} */
diff --git a/ext/intl/dateformat/dateformat.c b/ext/intl/dateformat/dateformat.c
index b399a39fc..6f7432254 100755
--- a/ext/intl/dateformat/dateformat.c
+++ b/ext/intl/dateformat/dateformat.c
@@ -99,46 +99,17 @@ static void datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
}
INTL_CHECK_LOCALE_LEN_OBJ(locale_len, return_value);
-
- if (calendar != UCAL_TRADITIONAL && calendar != UCAL_GREGORIAN) {
- intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR, "datefmt_create: "
- "invalid value for calendar type; it must be one of "
- "IntlDateFormatter::TRADITIONAL (locale's default calendar) "
- "or IntlDateFormatter::GREGORIAN", 0 TSRMLS_CC);
- goto error;
- }
-
DATE_FORMAT_METHOD_FETCH_OBJECT;
-
- if (DATE_FORMAT_OBJECT(dfo) != NULL) {
- intl_errors_set(INTL_DATA_ERROR_P(dfo), U_ILLEGAL_ARGUMENT_ERROR,
- "datefmt_create: cannot call constructor twice", 0 TSRMLS_CC);
- return;
- }
-
/* Convert pattern (if specified) to UTF-16. */
if( pattern_str && pattern_str_len>0 ){
- intl_convert_utf8_to_utf16(&svalue, &slength,
- pattern_str, pattern_str_len, &INTL_DATA_ERROR_CODE(dfo));
- if (U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
- /* object construction -> only set global error */
- intl_error_set(NULL, INTL_DATA_ERROR_CODE(dfo), "datefmt_create: "
- "error converting pattern to UTF-16", 0 TSRMLS_CC);
- goto error;
- }
+ intl_convert_utf8_to_utf16(&svalue, &slength, pattern_str, pattern_str_len, &INTL_DATA_ERROR_CODE(dfo));
+ INTL_CTOR_CHECK_STATUS(dfo, "datefmt_create: error converting pattern to UTF-16");
}
-
- /* resources allocated from now on */
/* Convert pattern (if specified) to UTF-16. */
if( timezone_str && timezone_str_len >0 ){
- intl_convert_utf8_to_utf16(&timezone_utf16, &timezone_utf16_len,
- timezone_str, timezone_str_len, &INTL_DATA_ERROR_CODE(dfo));
- if (U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
- intl_error_set(NULL, INTL_DATA_ERROR_CODE(dfo), "datefmt_create: "
- "error converting timezone_str to UTF-16", 0 TSRMLS_CC);
- goto error;
- }
+ intl_convert_utf8_to_utf16(&timezone_utf16, &timezone_utf16_len, timezone_str, timezone_str_len, &INTL_DATA_ERROR_CODE(dfo));
+ INTL_CTOR_CHECK_STATUS(dfo, "datefmt_create: error converting timezone_str to UTF-16" );
}
if(locale_len == 0) {
@@ -151,25 +122,25 @@ static void datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
DATE_FORMAT_OBJECT(dfo) = udat_open(time_type, date_type, locale, timezone_utf16, timezone_utf16_len, svalue, slength, &INTL_DATA_ERROR_CODE(dfo));
}
- if (!U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
- if (calendar != UCAL_TRADITIONAL) {
- ucal_obj = ucal_open(timezone_utf16, timezone_utf16_len, locale,
- calendar, &INTL_DATA_ERROR_CODE(dfo));
- if (!U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
- udat_setCalendar(DATE_FORMAT_OBJECT(dfo), ucal_obj);
- ucal_close(ucal_obj);
- } else {
- intl_error_set(NULL, INTL_DATA_ERROR_CODE(dfo), "datefmt_create"
- ": error opening calendar", 0 TSRMLS_CC);
- goto error;
- }
+ /* Set the calendar if passed */
+ if(!U_FAILURE(INTL_DATA_ERROR_CODE(dfo)) && calendar) {
+ ucal_obj = ucal_open( timezone_utf16, timezone_utf16_len, locale, calendar, &INTL_DATA_ERROR_CODE(dfo) );
+ if(!U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
+ udat_setCalendar( DATE_FORMAT_OBJECT(dfo), ucal_obj );
}
- } else {
- intl_error_set(NULL, INTL_DATA_ERROR_CODE(dfo), "datefmt_create: date "
- "formatter creation failed", 0 TSRMLS_CC);
- goto error;
+ }
+
+ if(svalue)
+ {
+ efree(svalue);
+ }
+ if(timezone_utf16)
+ {
+ efree(timezone_utf16);
}
+ INTL_CTOR_CHECK_STATUS(dfo, "datefmt_create: date formatter creation failed");
+
/* Set the class variables */
dfo->date_type = date_type;
dfo->time_type = time_type;
@@ -177,19 +148,6 @@ static void datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
if( timezone_str && timezone_str_len > 0){
dfo->timezone_id = estrndup( timezone_str, timezone_str_len);
}
-
-error:
- if (svalue) {
- efree(svalue);
- }
- if (timezone_utf16) {
- efree(timezone_utf16);
- }
- if (U_FAILURE(intl_error_get_code(NULL TSRMLS_CC))) {
- /* free_object handles partially constructed instances fine */
- zval_dtor(return_value);
- RETVAL_NULL();
- }
}
/* }}} */
@@ -211,8 +169,6 @@ PHP_FUNCTION( datefmt_create )
*/
PHP_METHOD( IntlDateFormatter, __construct )
{
- /* return_value param is being changed, therefore we will always return
- * NULL here */
return_value = getThis();
datefmt_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
diff --git a/ext/intl/grapheme/grapheme_string.c b/ext/intl/grapheme/grapheme_string.c
index 475bbe418..692e2f80b 100755
--- a/ext/intl/grapheme/grapheme_string.c
+++ b/ext/intl/grapheme/grapheme_string.c
@@ -822,7 +822,6 @@ PHP_FUNCTION(grapheme_extract)
}
else {
/* initialize next */
- zval_dtor(next);
ZVAL_LONG(next, lstart);
}
}
diff --git a/ext/intl/resourcebundle/resourcebundle_class.c b/ext/intl/resourcebundle/resourcebundle_class.c
index 1205450c4..5471e5b3f 100644
--- a/ext/intl/resourcebundle/resourcebundle_class.c
+++ b/ext/intl/resourcebundle/resourcebundle_class.c
@@ -91,7 +91,7 @@ static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS)
intl_error_reset( NULL TSRMLS_CC );
- if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s!s!|b",
+ if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "ss|b",
&locale, &locale_len, &bundlename, &bundlename_len, &fallback ) == FAILURE )
{
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
@@ -101,10 +101,6 @@ static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS)
}
INTL_CHECK_LOCALE_LEN_OBJ(locale_len, return_value);
-
- if (locale == NULL) {
- locale = INTL_G(default_locale);
- }
if (fallback) {
rb->me = ures_open(bundlename, locale, &INTL_DATA_ERROR_CODE(rb));
@@ -114,17 +110,13 @@ static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS)
INTL_CTOR_CHECK_STATUS(rb, "resourcebundle_ctor: Cannot load libICU resource bundle");
- if (!fallback && (INTL_DATA_ERROR_CODE(rb) == U_USING_FALLBACK_WARNING ||
- INTL_DATA_ERROR_CODE(rb) == U_USING_DEFAULT_WARNING)) {
- intl_errors_set_code(NULL, INTL_DATA_ERROR_CODE(rb) TSRMLS_CC);
- spprintf(&pbuf, 0, "resourcebundle_ctor: Cannot load libICU resource "
- "'%s' without fallback from %s to %s",
- bundlename ? bundlename : "(default data)", locale,
- ures_getLocaleByType(
- rb->me, ULOC_ACTUAL_LOCALE, &INTL_DATA_ERROR_CODE(rb)));
- intl_errors_set_custom_msg(INTL_DATA_ERROR_P(rb), pbuf, 1 TSRMLS_CC);
+ if (!fallback && (INTL_DATA_ERROR_CODE(rb) == U_USING_FALLBACK_WARNING || INTL_DATA_ERROR_CODE(rb) == U_USING_DEFAULT_WARNING)) {
+ intl_errors_set_code( NULL, INTL_DATA_ERROR_CODE(rb) TSRMLS_CC );
+ spprintf( &pbuf, 0, "resourcebundle_ctor: Cannot load libICU resource '%s' without fallback from %s to %s",
+ bundlename, locale, ures_getLocaleByType( rb->me, ULOC_ACTUAL_LOCALE, &INTL_DATA_ERROR_CODE(rb)) );
+ intl_errors_set_custom_msg( INTL_DATA_ERROR_P(rb), pbuf, 1 TSRMLS_CC );
efree(pbuf);
- zval_dtor(return_value);
+ zval_dtor( return_value );
RETURN_NULL();
}
}
@@ -435,8 +427,6 @@ void resourcebundle_register_class( TSRMLS_D )
ResourceBundle_object_handlers.clone_obj = NULL; /* ICU ResourceBundle has no clone implementation */
ResourceBundle_object_handlers.read_dimension = resourcebundle_array_get;
ResourceBundle_object_handlers.count_elements = resourcebundle_array_count;
-
- zend_class_implements(ResourceBundle_ce_ptr TSRMLS_CC, 1, zend_ce_traversable);
}
/* }}} */
diff --git a/ext/intl/tests/bug62017.phpt b/ext/intl/tests/bug62017.phpt
deleted file mode 100644
index 13c4fe5df..000000000
--- a/ext/intl/tests/bug62017.phpt
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Bug #62017: datefmt_create with incorrectly encoded timezone leaks pattern
---SKIPIF--
-<?php
-if (!extension_loaded('intl'))
- die('skip intl extension not enabled');
---FILE--
-<?php
-ini_set('intl.error_level', E_WARNING);
-var_dump(
- datefmt_create('', IntlDateFormatter::NONE, IntlDateFormatter::NONE, "\xFF",
- IntlDateFormatter::GREGORIAN, 'a'));
-var_dump(
- new IntlDateFormatter('', IntlDateFormatter::NONE, IntlDateFormatter::NONE, "Europe/Lisbon",
- IntlDateFormatter::GREGORIAN, "\x80"));
---EXPECTF--
-Warning: datefmt_create(): datefmt_create: error converting timezone_str to UTF-16 in %s on line %d
-NULL
-
-Warning: IntlDateFormatter::__construct(): datefmt_create: error converting pattern to UTF-16 in %s on line %d
-NULL
-
diff --git a/ext/intl/tests/bug62070.phpt b/ext/intl/tests/bug62070.phpt
deleted file mode 100644
index a466b05c2..000000000
--- a/ext/intl/tests/bug62070.phpt
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Bug #62070: Collator::getSortKey() returns garbage
---SKIPIF--
-<?php
-if (!extension_loaded('intl'))
- die('skip intl extension not enabled');
---FILE--
-<?php
-$s1 = 'Hello';
-
-$coll = collator_create('en_US');
-$res = collator_get_sort_key($coll, $s1);
-
-echo urlencode($res);
---EXPECT--
-5%2F%3D%3DC%01%09%01%8F%08
diff --git a/ext/intl/tests/bug62081.phpt b/ext/intl/tests/bug62081.phpt
deleted file mode 100644
index 7d9e2cec4..000000000
--- a/ext/intl/tests/bug62081.phpt
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Bug #62081: IntlDateFormatter leaks memory if called twice
---SKIPIF--
-<?php
-if (!extension_loaded('intl'))
- die('skip intl extension not enabled');
---FILE--
-<?php
-ini_set('intl.error_level', E_WARNING);
-$x = new IntlDateFormatter(1,1,1,1,1);
-var_dump($x->__construct(1,1,1,1,1));
---EXPECTF--
-Warning: IntlDateFormatter::__construct(): datefmt_create: cannot call constructor twice in %s on line %d
-NULL
diff --git a/ext/intl/tests/bug62083.phpt b/ext/intl/tests/bug62083.phpt
deleted file mode 100644
index 4baa5c5e9..000000000
--- a/ext/intl/tests/bug62083.phpt
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Bug #62083: grapheme_extract() leaks memory
---SKIPIF--
-<?php
-if (!extension_loaded('intl'))
- die('skip intl extension not enabled');
---FILE--
-<?php
-$arr1 = array();
-var_dump(grapheme_extract(-1, -1, -1,-1, $arr1));
---EXPECT--
-bool(false)
diff --git a/ext/intl/tests/dateformat_calendars.phpt b/ext/intl/tests/dateformat_calendars.phpt
deleted file mode 100644
index 27f380c71..000000000
--- a/ext/intl/tests/dateformat_calendars.phpt
+++ /dev/null
@@ -1,45 +0,0 @@
---TEST--
-IntlDateFormatter, calendars and time zone
---INI--
-date.timezone=Atlantic/Azores
---SKIPIF--
-<?php
-if (!extension_loaded('intl'))
- die('skip intl extension not enabled');
---FILE--
-<?php
-ini_set("intl.error_level", E_WARNING);
-
-$fmt1 = new IntlDateFormatter('en_US',
- IntlDateFormatter::FULL,
- IntlDateFormatter::FULL,
- 'GMT+05:12',
- IntlDateFormatter::TRADITIONAL);
-$fmt2 = new IntlDateFormatter('en_US',
- IntlDateFormatter::FULL,
- IntlDateFormatter::FULL,
- 'GMT+05:12',
- IntlDateFormatter::GREGORIAN);
-$fmt3 = new IntlDateFormatter('en_US@calendar=hebrew',
- IntlDateFormatter::FULL,
- IntlDateFormatter::FULL,
- 'GMT+05:12',
- IntlDateFormatter::TRADITIONAL);
-var_dump($fmt1->format(strtotime('2012-01-01 00:00:00 +0000')));
-var_dump($fmt2->format(strtotime('2012-01-01 00:00:00 +0000')));
-var_dump($fmt3->format(strtotime('2012-01-01 00:00:00 +0000')));
-
-new IntlDateFormatter('en_US@calendar=hebrew',
- IntlDateFormatter::FULL,
- IntlDateFormatter::FULL,
- 'GMT+05:12',
- -1);
-?>
-==DONE==
---EXPECTF--
-string(44) "Sunday, January 1, 2012 5:12:00 AM GMT+05:12"
-string(44) "Sunday, January 1, 2012 5:12:00 AM GMT+05:12"
-string(42) "Sunday, Tevet 6, 5772 5:12:00 AM GMT+05:12"
-
-Warning: IntlDateFormatter::__construct(): datefmt_create: invalid value for calendar type; it must be one of IntlDateFormatter::TRADITIONAL (locale's default calendar) or IntlDateFormatter::GREGORIAN in %s on line %d
-==DONE==
diff --git a/ext/intl/tests/resourcebundle_null_mandatory_args.phpt b/ext/intl/tests/resourcebundle_null_mandatory_args.phpt
deleted file mode 100644
index 8fde61bd2..000000000
--- a/ext/intl/tests/resourcebundle_null_mandatory_args.phpt
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-IntlCalendar::setTime() basic test
---INI--
-date.timezone=Atlantic/Azores
---SKIPIF--
-<?php
-if (!extension_loaded('intl'))
- die('skip intl extension not enabled');
---FILE--
-<?php
-ini_set("intl.error_level", E_WARNING);
-
-$r = new ResourceBundle('en_US', NULL);
-$c = $r->get('calendar')->get('gregorian')->get('DateTimePatterns')->get(0);
-var_dump($c);
-
-ini_set('intl.default_locale', 'pt_PT');
-$r = new ResourceBundle(NULL, NULL);
-$c = $r->get('calendar')->get('gregorian')->get('DateTimePatterns')->get(0);
-var_dump($c);
-?>
-==DONE==
---EXPECT--
-string(14) "h:mm:ss a zzzz"
-string(12) "H:mm:ss zzzz"
-==DONE==
diff --git a/ext/intl/tests/resourcebundle_traversable.phpt b/ext/intl/tests/resourcebundle_traversable.phpt
deleted file mode 100644
index 1e6af7b90..000000000
--- a/ext/intl/tests/resourcebundle_traversable.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-Bug #55610: ResourceBundle does not implement Traversable
---SKIPIF--
-<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
---FILE--
-<?php
- include "resourcebundle.inc";
-
- $r = new ResourceBundle( 'es', BUNDLE );
-
- var_dump($r instanceof Traversable);
- var_dump(iterator_to_array($r->get('testarray')));
-?>
---EXPECTF--
-bool(true)
-array(3) {
- [0]=>
- string(8) "cadena 1"
- [1]=>
- string(8) "cadena 2"
- [2]=>
- string(8) "cadena 3"
-}
diff --git a/ext/libxml/tests/bug61367-read.phpt b/ext/libxml/tests/bug61367-read.phpt
index 94da3d848..3deecfc50 100644
--- a/ext/libxml/tests/bug61367-read.phpt
+++ b/ext/libxml/tests/bug61367-read.phpt
@@ -4,12 +4,11 @@ Bug #61367: open_basedir bypass in libxml RSHUTDOWN: read test
<?php if(!extension_loaded('dom')) echo 'skip'; ?>
--INI--
open_basedir=.
+; Suppress spurious "Trying to get property of non-object" notices
error_reporting=E_ALL & ~E_NOTICE
--FILE--
<?php
-/*
- * Note: Using error_reporting=E_ALL & ~E_NOTICE to supress "Trying to get property of non-object" notices.
- */
+
class StreamExploiter {
public function stream_close ( ) {
$doc = new DOMDocument;
diff --git a/ext/libxml/tests/bug61367-write.phpt b/ext/libxml/tests/bug61367-write.phpt
index e18b07149..aeed688ff 100644
--- a/ext/libxml/tests/bug61367-write.phpt
+++ b/ext/libxml/tests/bug61367-write.phpt
@@ -4,6 +4,8 @@ Bug #61367: open_basedir bypass in libxml RSHUTDOWN: write test
<?php if(!extension_loaded('dom')) echo 'skip'; ?>
--INI--
open_basedir=.
+; Suppress spurious "Trying to get property of non-object" notices
+error_reporting=E_ALL & ~E_NOTICE
--FILE--
<?php
diff --git a/ext/mysqli/tests/bug62046.phpt b/ext/mysqli/tests/bug62046.phpt
deleted file mode 100644
index 31a7328b7..000000000
--- a/ext/mysqli/tests/bug62046.phpt
+++ /dev/null
@@ -1,40 +0,0 @@
---TEST--
-Bug #62046 mysqli@mysqlnd can't iterate over stored sets after call to mysqli_stmt_reset()
---SKIPIF--
-<?php
-require_once('skipif.inc');
-require_once('skipifconnectfailure.inc');
-?>
---FILE--
-<?php
- require_once("connect.inc");
-
- if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
- printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
- }
- if (FALSE === ($stmt = $link->prepare('SELECT 42'))) {
- printf("[002] Prepare failed, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
- }
- if (FALSE === $stmt->execute()) {
- printf("[003] Execute failed, [%d] %s\n", $stmt->errorno, $stmt->error);
- }
- if (FALSE === $stmt->store_result()) {
- printf("[004] store_result failed, [%d] %s\n", $stmt->errorno, $stmt->error);
- }
- $one = NULL;
- if (FALSE === $stmt->bind_result($one)) {
- printf("[005] bind_result failed, [%d] %s\n", $stmt->errorno, $stmt->error);
- }
- if (FALSE === $stmt->reset()) {
- printf("[006] bind_result failed, [%d] %s\n", $stmt->errorno, $stmt->error);
- }
- while ($stmt->fetch()) {
- var_dump($one);
- }
- $stmt->close();
- $link->close();
- echo "done!";
-?>
---EXPECT--
-int(42)
-done! \ No newline at end of file
diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c
index 1b48ba1d7..90e685654 100644
--- a/ext/mysqlnd/mysqlnd_ps.c
+++ b/ext/mysqlnd/mysqlnd_ps.c
@@ -636,8 +636,6 @@ MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const s TSRMLS_DC)
have it again.
*/
stmt->result->m.free_result_buffers(stmt->result TSRMLS_CC);
-
- stmt->state = MYSQLND_STMT_PREPARED;
} else if (stmt->state < MYSQLND_STMT_PREPARED) {
/* Only initted - error */
SET_CLIENT_ERROR(*conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE,
@@ -1223,6 +1221,8 @@ MYSQLND_METHOD(mysqlnd_stmt, reset)(MYSQLND_STMT * const s TSRMLS_DC)
COPY_CLIENT_ERROR(*stmt->error_info, *conn->error_info);
}
*stmt->upsert_status = *conn->upsert_status;
+
+ stmt->state = MYSQLND_STMT_PREPARED;
}
DBG_INF(ret == PASS? "PASS":"FAIL");
DBG_RETURN(ret);
@@ -1261,6 +1261,8 @@ MYSQLND_METHOD(mysqlnd_stmt, flush)(MYSQLND_STMT * const s TSRMLS_DC)
stmt->result->m.skip_result(stmt->result TSRMLS_CC);
}
} while (mysqlnd_stmt_more_results(s) && mysqlnd_stmt_next_result(s) == PASS);
+
+ stmt->state = MYSQLND_STMT_PREPARED;
}
DBG_INF(ret == PASS? "PASS":"FAIL");
DBG_RETURN(ret);
diff --git a/ext/phar/tests/fatal_error_webphar.phpt b/ext/phar/tests/fatal_error_webphar.phpt
index dd6e0961a..3153c344e 100644
--- a/ext/phar/tests/fatal_error_webphar.phpt
+++ b/ext/phar/tests/fatal_error_webphar.phpt
@@ -15,4 +15,4 @@ Content-type: text/html; charset=UTF-8
--EXPECTF--
string(9) "\Web\View"
-Parse error: syntax error, unexpected %s, expecting %s in phar://%r([A-Za-z]:)?%r/%sfatal_error_webphar.php/Web/View.php on line 380
+Parse error: syntax error, unexpected %s, expecting %s in phar:///%sfatal_error_webphar.php/Web/View.php on line 380
diff --git a/ext/sockets/config.m4 b/ext/sockets/config.m4
index 4032621ce..3fb93aec7 100644
--- a/ext/sockets/config.m4
+++ b/ext/sockets/config.m4
@@ -27,21 +27,6 @@ if test "$PHP_SOCKETS" != "no"; then
[AC_DEFINE(MISSING_MSGHDR_MSGFLAGS, 1, [ ])]
)
AC_DEFINE([HAVE_SOCKETS], 1, [ ])
-
- dnl Check for fied ss_family in sockaddr_storage (missing in AIX until 5.3)
- AC_CACHE_CHECK([for field ss_family in struct sockaddr_storage], ac_cv_ss_family,
- [
- AC_TRY_COMPILE([
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netdb.h>
- ], [struct sockaddr_storage sa_store; sa_store.ss_family = AF_INET6;],
- ac_cv_ss_family=yes, ac_cv_ss_family=no)
- ])
-
- if test "$ac_cv_ss_family" = yes; then
- AC_DEFINE(HAVE_SA_SS_FAMILY,1,[Whether you have sockaddr_storage.ss_family])
- fi
PHP_NEW_EXTENSION([sockets], [sockets.c multicast.c], [$ext_shared])
PHP_INSTALL_HEADERS([ext/sockets/], [php_sockets.h])
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 0d1714257..46d9f8e1b 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -77,9 +77,6 @@
# define IS_INVALID_SOCKET(a) (a->bsd_socket < 0)
# define set_errno(a) (errno = a)
# include "php_sockets.h"
-# if defined(_AIX) && !defined(HAVE_SA_SS_FAMILY)
-# define ss_family __ss_family
-# endif
# if HAVE_IF_NAMETOINDEX
# include <net/if.h>
# endif
diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c
index c6decd0ad..42cb856e9 100644
--- a/ext/spl/spl_heap.c
+++ b/ext/spl/spl_heap.c
@@ -953,7 +953,7 @@ static int spl_heap_it_get_current_key(zend_object_iterator *iter, char **str_ke
{
spl_heap_it *iterator = (spl_heap_it *)iter;
- *int_key = (ulong) iterator->object->heap->count - 1;
+ *int_key = (ulong) iterator->object->heap->count;
return HASH_KEY_IS_LONG;
}
/* }}} */
diff --git a/ext/spl/tests/bug62073.phpt b/ext/spl/tests/bug62073.phpt
deleted file mode 100644
index 3bd355317..000000000
--- a/ext/spl/tests/bug62073.phpt
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Bug #62073 (different ways of iterating over an SplMaxHeap result in different keys)
---FILE--
-<?php
-$heap = new SplMaxHeap();
-$heap->insert(42);
-foreach ($heap as $key => $value) {
- var_dump($key);
- var_dump($value);
- break;
-}
-
-$heap = new SplMaxHeap();
-$heap->insert(42);
-var_dump($heap->key());
-var_dump($heap->current());
-?>
---EXPECT--
-int(0)
-int(42)
-int(0)
-int(42)
diff --git a/ext/spl/tests/heap_005.phpt b/ext/spl/tests/heap_005.phpt
index 1291cda77..73daaf454 100644
--- a/ext/spl/tests/heap_005.phpt
+++ b/ext/spl/tests/heap_005.phpt
@@ -18,104 +18,104 @@ foreach ($h as $k => $o) {
===DONE===
<?php exit(0); ?>
--EXPECTF--
-99 => 1
-98 => 2
-97 => 3
-96 => 4
-95 => 5
-94 => 6
-93 => 7
-92 => 8
-91 => 9
-90 => 10
-89 => 11
-88 => 12
-87 => 13
-86 => 14
-85 => 15
-84 => 16
-83 => 17
-82 => 18
-81 => 19
-80 => 20
-79 => 21
-78 => 22
-77 => 23
-76 => 24
-75 => 25
-74 => 26
-73 => 27
-72 => 28
-71 => 29
-70 => 30
-69 => 31
-68 => 32
-67 => 33
-66 => 34
-65 => 35
-64 => 36
-63 => 37
-62 => 38
-61 => 39
-60 => 40
-59 => 41
-58 => 42
-57 => 43
-56 => 44
-55 => 45
-54 => 46
-53 => 47
-52 => 48
-51 => 49
-50 => 50
-49 => 51
-48 => 52
-47 => 53
-46 => 54
-45 => 55
-44 => 56
-43 => 57
-42 => 58
-41 => 59
-40 => 60
-39 => 61
-38 => 62
-37 => 63
-36 => 64
-35 => 65
-34 => 66
-33 => 67
-32 => 68
-31 => 69
-30 => 70
-29 => 71
-28 => 72
-27 => 73
-26 => 74
-25 => 75
-24 => 76
-23 => 77
-22 => 78
-21 => 79
-20 => 80
-19 => 81
-18 => 82
-17 => 83
-16 => 84
-15 => 85
-14 => 86
-13 => 87
-12 => 88
-11 => 89
-10 => 90
-9 => 91
-8 => 92
-7 => 93
-6 => 94
-5 => 95
-4 => 96
-3 => 97
-2 => 98
-1 => 99
-0 => 100
+100 => 1
+99 => 2
+98 => 3
+97 => 4
+96 => 5
+95 => 6
+94 => 7
+93 => 8
+92 => 9
+91 => 10
+90 => 11
+89 => 12
+88 => 13
+87 => 14
+86 => 15
+85 => 16
+84 => 17
+83 => 18
+82 => 19
+81 => 20
+80 => 21
+79 => 22
+78 => 23
+77 => 24
+76 => 25
+75 => 26
+74 => 27
+73 => 28
+72 => 29
+71 => 30
+70 => 31
+69 => 32
+68 => 33
+67 => 34
+66 => 35
+65 => 36
+64 => 37
+63 => 38
+62 => 39
+61 => 40
+60 => 41
+59 => 42
+58 => 43
+57 => 44
+56 => 45
+55 => 46
+54 => 47
+53 => 48
+52 => 49
+51 => 50
+50 => 51
+49 => 52
+48 => 53
+47 => 54
+46 => 55
+45 => 56
+44 => 57
+43 => 58
+42 => 59
+41 => 60
+40 => 61
+39 => 62
+38 => 63
+37 => 64
+36 => 65
+35 => 66
+34 => 67
+33 => 68
+32 => 69
+31 => 70
+30 => 71
+29 => 72
+28 => 73
+27 => 74
+26 => 75
+25 => 76
+24 => 77
+23 => 78
+22 => 79
+21 => 80
+20 => 81
+19 => 82
+18 => 83
+17 => 84
+16 => 85
+15 => 86
+14 => 87
+13 => 88
+12 => 89
+11 => 90
+10 => 91
+9 => 92
+8 => 93
+7 => 94
+6 => 95
+5 => 96
+4 => 97
+3 => 98
+2 => 99
+1 => 100
===DONE===
diff --git a/ext/spl/tests/heap_006.phpt b/ext/spl/tests/heap_006.phpt
index 3218bdfb1..4422727d0 100644
--- a/ext/spl/tests/heap_006.phpt
+++ b/ext/spl/tests/heap_006.phpt
@@ -18,104 +18,104 @@ foreach ($h as $k => $o) {
===DONE===
<?php exit(0); ?>
--EXPECTF--
-99 => 100
-98 => 99
-97 => 98
-96 => 97
-95 => 96
-94 => 95
-93 => 94
-92 => 93
-91 => 92
-90 => 91
-89 => 90
-88 => 89
-87 => 88
-86 => 87
-85 => 86
-84 => 85
-83 => 84
-82 => 83
-81 => 82
-80 => 81
-79 => 80
-78 => 79
-77 => 78
-76 => 77
-75 => 76
-74 => 75
-73 => 74
-72 => 73
-71 => 72
-70 => 71
-69 => 70
-68 => 69
-67 => 68
-66 => 67
-65 => 66
-64 => 65
-63 => 64
-62 => 63
-61 => 62
-60 => 61
-59 => 60
-58 => 59
-57 => 58
-56 => 57
-55 => 56
-54 => 55
-53 => 54
-52 => 53
-51 => 52
-50 => 51
-49 => 50
-48 => 49
-47 => 48
-46 => 47
-45 => 46
-44 => 45
-43 => 44
-42 => 43
-41 => 42
-40 => 41
-39 => 40
-38 => 39
-37 => 38
-36 => 37
-35 => 36
-34 => 35
-33 => 34
-32 => 33
-31 => 32
-30 => 31
-29 => 30
-28 => 29
-27 => 28
-26 => 27
-25 => 26
-24 => 25
-23 => 24
-22 => 23
-21 => 22
-20 => 21
-19 => 20
-18 => 19
-17 => 18
-16 => 17
-15 => 16
-14 => 15
-13 => 14
-12 => 13
-11 => 12
-10 => 11
-9 => 10
-8 => 9
-7 => 8
-6 => 7
-5 => 6
-4 => 5
-3 => 4
-2 => 3
-1 => 2
-0 => 1
+100 => 100
+99 => 99
+98 => 98
+97 => 97
+96 => 96
+95 => 95
+94 => 94
+93 => 93
+92 => 92
+91 => 91
+90 => 90
+89 => 89
+88 => 88
+87 => 87
+86 => 86
+85 => 85
+84 => 84
+83 => 83
+82 => 82
+81 => 81
+80 => 80
+79 => 79
+78 => 78
+77 => 77
+76 => 76
+75 => 75
+74 => 74
+73 => 73
+72 => 72
+71 => 71
+70 => 70
+69 => 69
+68 => 68
+67 => 67
+66 => 66
+65 => 65
+64 => 64
+63 => 63
+62 => 62
+61 => 61
+60 => 60
+59 => 59
+58 => 58
+57 => 57
+56 => 56
+55 => 55
+54 => 54
+53 => 53
+52 => 52
+51 => 51
+50 => 50
+49 => 49
+48 => 48
+47 => 47
+46 => 46
+45 => 45
+44 => 44
+43 => 43
+42 => 42
+41 => 41
+40 => 40
+39 => 39
+38 => 38
+37 => 37
+36 => 36
+35 => 35
+34 => 34
+33 => 33
+32 => 32
+31 => 31
+30 => 30
+29 => 29
+28 => 28
+27 => 27
+26 => 26
+25 => 25
+24 => 24
+23 => 23
+22 => 22
+21 => 21
+20 => 20
+19 => 19
+18 => 18
+17 => 17
+16 => 16
+15 => 15
+14 => 14
+13 => 13
+12 => 12
+11 => 11
+10 => 10
+9 => 9
+8 => 8
+7 => 7
+6 => 6
+5 => 5
+4 => 4
+3 => 3
+2 => 2
+1 => 1
===DONE===
diff --git a/ext/spl/tests/pqueue_001.phpt b/ext/spl/tests/pqueue_001.phpt
index de164e549..9c299808f 100644
--- a/ext/spl/tests/pqueue_001.phpt
+++ b/ext/spl/tests/pqueue_001.phpt
@@ -63,34 +63,34 @@ foreach ($pq3 as $k=>$v) {
<?php exit(0); ?>
--EXPECTF--
Exception: Can't extract from an empty heap
-2=>b
-1=>a
-0=>c
+3=>b
+2=>a
+1=>c
EXTR_BOTH
-2=>Array
+3=>Array
(
[data] => b
[priority] => 2
)
-1=>Array
+2=>Array
(
[data] => a
[priority] => 1
)
-0=>Array
+1=>Array
(
[data] => c
[priority] => 0
)
EXTR_DATA
-2=>b
-1=>a
-0=>c
+3=>b
+2=>a
+1=>c
EXTR_PRIORITY
-2=>2
-1=>1
-0=>0
+3=>2
+2=>1
+1=>0
===DONE===
diff --git a/ext/standard/math.c b/ext/standard/math.c
index b3e8c6f08..65187f6fa 100644
--- a/ext/standard/math.c
+++ b/ext/standard/math.c
@@ -1097,9 +1097,7 @@ PHPAPI char *_php_math_number_format(double d, int dec, char dec_point, char tho
return _php_math_number_format_ex(d, dec, &dec_point, 1, &thousand_sep, 1);
}
-static char *_php_math_number_format_ex_len(double d, int dec, char *dec_point,
- size_t dec_point_len, char *thousand_sep, size_t thousand_sep_len,
- int *result_len)
+PHPAPI char *_php_math_number_format_ex(double d, int dec, char *dec_point, size_t dec_point_len, char *thousand_sep, size_t thousand_sep_len)
{
char *tmpbuf = NULL, *resbuf;
char *s, *t; /* source, target */
@@ -1207,19 +1205,8 @@ static char *_php_math_number_format_ex_len(double d, int dec, char *dec_point,
efree(tmpbuf);
- if (result_len) {
- *result_len = reslen;
- }
-
return resbuf;
}
-
-PHPAPI char *_php_math_number_format_ex(double d, int dec, char *dec_point,
- size_t dec_point_len, char *thousand_sep, size_t thousand_sep_len)
-{
- return _php_math_number_format_ex_len(d, dec, dec_point, dec_point_len,
- thousand_sep, thousand_sep_len, NULL);
-}
/* }}} */
/* {{{ proto string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])
@@ -1254,10 +1241,7 @@ PHP_FUNCTION(number_format)
thousand_sep_len = 1;
}
- Z_TYPE_P(return_value) = IS_STRING;
- Z_STRVAL_P(return_value) = _php_math_number_format_ex_len(num, dec,
- dec_point, dec_point_len, thousand_sep, thousand_sep_len,
- &Z_STRLEN_P(return_value));
+ RETURN_STRING(_php_math_number_format_ex(num, dec, dec_point, dec_point_len, thousand_sep, thousand_sep_len), 0);
break;
default:
WRONG_PARAM_COUNT;
diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c
index 5ff91994a..4dd52ed28 100644
--- a/ext/standard/proc_open.c
+++ b/ext/standard/proc_open.c
@@ -56,7 +56,7 @@
/* This symbol is defined in ext/standard/config.m4.
* Essentially, it is set if you HAVE_FORK || PHP_WIN32
- * Other platforms may modify that configure check and add suitable #ifdefs
+ * Otherplatforms may modify that configure check and add suitable #ifdefs
* around the alternate code.
* */
#ifdef PHP_CAN_SUPPORT_PROC_OPEN
diff --git a/ext/standard/tests/dir/dir_variation8-win32.phpt b/ext/standard/tests/dir/dir_variation8-win32.phpt
index a56c98b88..2202fb048 100644
--- a/ext/standard/tests/dir/dir_variation8-win32.phpt
+++ b/ext/standard/tests/dir/dir_variation8-win32.phpt
@@ -45,23 +45,23 @@ echo "Done";
*** Testing dir() : checking with wildcard characters ***
-- wildcard = '*' --
-Warning: dir(%s/dir_var*,%s/dir_var*): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d
+Warning: dir(%s/dir_var*,%s/dir_var*): No such file or directory in %s on line %d
Warning: dir(%s/dir_var*): failed to open dir: %s in %s on line %d
bool(false)
-Warning: dir(%s/*,%s/*): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d
+Warning: dir(%s/*,%s/*): No such file or directory in %s on line %d
Warning: dir(%s/*): failed to open dir: %s in %s on line %d
bool(false)
-- wildcard = '?' --
-Warning: dir(%s/dir_variation81/sub_dir?,%s/dir_variation81/sub_dir?): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d
+Warning: dir(%s/dir_variation81/sub_dir?,%s/dir_variation81/sub_dir?): No such file or directory in %s on line %d
Warning: dir(%s/dir_variation81/sub_dir?): failed to open dir: %s in %s on line %d
bool(false)
-Warning: dir(%s/dir_variation81/sub?dir1,%s/dir_variation81/sub?dir1): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d
+Warning: dir(%s/dir_variation81/sub?dir1,%s/dir_variation81/sub?dir1): No such file or directory in %s on line %d
Warning: dir(%s/dir_variation81/sub?dir1): failed to open dir: %s in %s on line %d
bool(false)
diff --git a/ext/standard/tests/file/popen_pclose_basic-win32.phpt b/ext/standard/tests/file/popen_pclose_basic-win32.phpt
index 6351d866f..b5c72560d 100644
--- a/ext/standard/tests/file/popen_pclose_basic-win32.phpt
+++ b/ext/standard/tests/file/popen_pclose_basic-win32.phpt
@@ -39,10 +39,7 @@ $arr = array("ggg", "ddd", "aaa", "sss");
//
// since we can't depend on PHP.ini being set a certain way,
// have to put the absolute path here.
-
-$sysroot = exec('echo %SYSTEMROOT%');
-
-$file_handle = popen("$sysroot/system32/sort", "w");
+$file_handle = popen("/windows/system32/sort", "w");
$newline = "\n";
foreach($arr as $str) {
fwrite($file_handle, (binary)$str);
diff --git a/ext/standard/tests/file/rename_variation13-win32.phpt b/ext/standard/tests/file/rename_variation13-win32.phpt
index a5030761a..dc44b358f 100644
--- a/ext/standard/tests/file/rename_variation13-win32.phpt
+++ b/ext/standard/tests/file/rename_variation13-win32.phpt
Binary files differ
diff --git a/ext/standard/tests/file/tempnam_variation7-win32.phpt b/ext/standard/tests/file/tempnam_variation7-win32.phpt
index 0c8caca95..1f0d97acf 100644
--- a/ext/standard/tests/file/tempnam_variation7-win32.phpt
+++ b/ext/standard/tests/file/tempnam_variation7-win32.phpt
@@ -93,13 +93,13 @@ File created in => temp dir
Warning: tempnam() expects parameter 1 to be a valid path, string given in %stempnam_variation7-win32.php on line %d
-- File is not created --
-Warning: unlink(): %r(Invalid argument|No such file or directory)%r in %s on line %d
+Warning: unlink(): Invalid argument in %s on line %d
-- Iteration 7 --
Warning: tempnam() expects parameter 1 to be a valid path, array given in %s on line %d
-- File is not created --
-Warning: unlink(): %r(Invalid argument|No such file or directory)%r in %s on line %d
+Warning: unlink(): Invalid argument in %s on line %d
-- Iteration 8 --
File name is => %s%et%s
File permissions are => 100666
diff --git a/ext/standard/tests/mail/mail_skipif.inc b/ext/standard/tests/mail/mail_skipif.inc
index 006594021..2f4fbf3d6 100644
--- a/ext/standard/tests/mail/mail_skipif.inc
+++ b/ext/standard/tests/mail/mail_skipif.inc
@@ -1,15 +1,5 @@
<?php
extension_loaded('imap') or die('skip imap extension not available in this build');
-
-if( substr(PHP_OS, 0, 3) == 'WIN' && extension_loaded('sockets')) {
- // be sure mail server is accessible... on PHP 5.3.13 release build, using test-pack PHP-5.3-r1af8b3f,
- // the code below didn't skip test even though there was no mail server
- // test then failed (no mail server to test against)
- $socket = socket_create(AF_INET, SOCK_RAW, 1);
- socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 10, 'usec' => 10));
- // imap uses tcp port 143
- socket_connect($socket, "localhost", 143) or die ("skip can't socket to mail server");
-}
// Change these to make tests run successfully
$mailbox = '{localhost}';
diff --git a/ext/standard/tests/math/bug62112.phpt b/ext/standard/tests/math/bug62112.phpt
deleted file mode 100644
index 01de35a9c..000000000
--- a/ext/standard/tests/math/bug62112.phpt
+++ /dev/null
Binary files differ
diff --git a/ext/tidy/tests/004.phpt b/ext/tidy/tests/004.phpt
index d13c37dcd..7ca17c6d9 100644
--- a/ext/tidy/tests/004.phpt
+++ b/ext/tidy/tests/004.phpt
@@ -6,7 +6,7 @@ tidy_diagnose()
<?php
$a = tidy_parse_string('<HTML></HTML>');
var_dump(tidy_diagnose($a));
-echo str_replace("\r", "", tidy_get_error_buffer($a));
+echo tidy_get_error_buffer($a);
$html = <<< HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c
index 0514b17ff..84be01d70 100644
--- a/ext/xmlwriter/php_xmlwriter.c
+++ b/ext/xmlwriter/php_xmlwriter.c
@@ -614,7 +614,6 @@ static char *_xmlwriter_get_valid_file_path(char *source, char *resolved_path, i
/* absolute file uris - libxml only supports localhost or empty host */
if (strncasecmp(source, "file:///", 8) == 0) {
if (source[sizeof("file:///") - 1] == '\0') {
- xmlFreeURI(uri);
return NULL;
}
isFileUri = 1;
@@ -625,7 +624,6 @@ static char *_xmlwriter_get_valid_file_path(char *source, char *resolved_path, i
#endif
} else if (strncasecmp(source, "file://localhost/",17) == 0) {
if (source[sizeof("file://localhost/") - 1] == '\0') {
- xmlFreeURI(uri);
return NULL;
}
diff --git a/main/php_config.h.in b/main/php_config.h.in
index cd96c1418..326dc7bc7 100644
--- a/main/php_config.h.in
+++ b/main/php_config.h.in
@@ -1498,9 +1498,6 @@
/* */
#undef HAVE_SAPDB
-/* Whether you have sockaddr_storage.ss_family */
-#undef HAVE_SA_SS_FAMILY
-
/* Define to 1 if you have the `scandir' function. */
#undef HAVE_SCANDIR
diff --git a/main/php_version.h b/main/php_version.h
index 6b49f4086..4f953462a 100644
--- a/main/php_version.h
+++ b/main/php_version.h
@@ -2,7 +2,7 @@
/* edit configure.in to change version number */
#define PHP_MAJOR_VERSION 5
#define PHP_MINOR_VERSION 4
-#define PHP_RELEASE_VERSION 5
-#define PHP_EXTRA_VERSION "-dev"
-#define PHP_VERSION "5.4.5-dev"
+#define PHP_RELEASE_VERSION 4
+#define PHP_EXTRA_VERSION ""
+#define PHP_VERSION "5.4.4"
#define PHP_VERSION_ID 50404
diff --git a/php.ini-development b/php.ini-development
index 298cb06a7..8e7073895 100644
--- a/php.ini-development
+++ b/php.ini-development
@@ -751,7 +751,7 @@ enable_dl = Off
; will look for to know it is OK to continue execution. Setting this variable MAY
; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
; http://php.net/cgi.redirect-status-env
-;cgi.redirect_status_env =
+;cgi.redirect_status_env = ;
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
@@ -768,7 +768,7 @@ enable_dl = Off
; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS. Default is zero.
; http://php.net/fastcgi.impersonate
-;fastcgi.impersonate = 1
+;fastcgi.impersonate = 1;
; Disable logging through FastCGI connection. PHP's default behavior is to enable
; this feature.
diff --git a/php.ini-production b/php.ini-production
index d4c1261fc..e8d1c748e 100644
--- a/php.ini-production
+++ b/php.ini-production
@@ -751,7 +751,7 @@ enable_dl = Off
; will look for to know it is OK to continue execution. Setting this variable MAY
; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
; http://php.net/cgi.redirect-status-env
-;cgi.redirect_status_env =
+;cgi.redirect_status_env = ;
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
@@ -768,7 +768,7 @@ enable_dl = Off
; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS. Default is zero.
; http://php.net/fastcgi.impersonate
-;fastcgi.impersonate = 1
+;fastcgi.impersonate = 1;
; Disable logging through FastCGI connection. PHP's default behavior is to enable
; this feature.
diff --git a/run-tests.php b/run-tests.php
index 2b37ec4f4..1fe0deb6a 100755
--- a/run-tests.php
+++ b/run-tests.php
@@ -239,7 +239,10 @@ $ini_overwrites = array(
'magic_quotes_runtime=0',
'ignore_repeated_errors=0',
'precision=14',
- 'memory_limit=128M',
+ 'unicode.runtime_encoding=ISO-8859-1',
+ 'unicode.script_encoding=UTF-8',
+ 'unicode.output_encoding=UTF-8',
+ 'unicode.from_error_mode=U_INVALID_SUBSTITUTE',
);
function write_information($show_html)
diff --git a/sapi/cgi/tests/apache_request_headers.phpt b/sapi/cgi/tests/apache_request_headers.phpt
index 3dc3580c2..2c82d57b2 100644
--- a/sapi/cgi/tests/apache_request_headers.phpt
+++ b/sapi/cgi/tests/apache_request_headers.phpt
@@ -1,7 +1,5 @@
--TEST--
apache_request_headers() stack overflow.
---INI--
-default_charset="UTF-8"
--SKIPIF--
<?php
include "skipif.inc";
@@ -31,7 +29,7 @@ echo "Done\n";
?>
--EXPECTF--
X-Powered-By: PHP/%s
-Content-type: text/html; charset=UTF-8
+Content-type: text/html
Array
(
diff --git a/sapi/cli/tests/bug61546.phpt b/sapi/cli/tests/bug61546.phpt
index 071edb722..2cd690f65 100644
--- a/sapi/cli/tests/bug61546.phpt
+++ b/sapi/cli/tests/bug61546.phpt
@@ -2,22 +2,13 @@
Bug #61546 (functions related to current script failed when chdir() in cli sapi)
--FILE--
<?php
-// reference doc for getmyinode() on php.net states that it returns an integer or FALSE on error
-// on Windows, getmyinode() returns 0 which normally casts to FALSE
-// however, the implementation of getmyinode() (in pageinfo.c) returns an explicit FALSE in the
-// event that the internal page_inode structure is less than 0, otherwise it returns the long value
-// of page_inode. therefore, an explicit 0 should be a passing value for this test.
-//
-// the ext/standard/tests/file/statpage.phpt test also tests getmyinode() returns an integer and will
-// pass even if that integer is 0. on Windows, the getmyinode() call in statpage.phpt returns 0 and
-// passes on Windows.
$php = getenv("TEST_PHP_EXECUTABLE");
$test_code = <<<PHP
<?php
chdir('..');
var_dump(get_current_user() != "");
chdir('..');
-var_dump(getmyinode() !== false);
+var_dump(getmyinode() != false);
var_dump(getlastmod() != false);
PHP;
diff --git a/sapi/fpm/config.m4 b/sapi/fpm/config.m4
index ad46717ac..89628100b 100644
--- a/sapi/fpm/config.m4
+++ b/sapi/fpm/config.m4
@@ -16,7 +16,6 @@ AC_DEFUN([AC_FPM_STDLIBS],
AC_CHECK_HEADERS([errno.h fcntl.h stdio.h stdlib.h unistd.h sys/uio.h])
AC_CHECK_HEADERS([sys/select.h sys/socket.h sys/time.h])
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h])
- AC_CHECK_HEADERS([sysexits.h])
])
AC_DEFUN([AC_FPM_PRCTL],
@@ -193,8 +192,6 @@ AC_DEFUN([AC_FPM_TRACE],
have_ptrace=no
have_broken_ptrace=yes
AC_MSG_RESULT([no])
- ], [
- AC_MSG_RESULT([skipped (cross compiling)])
])
fi
@@ -267,8 +264,6 @@ AC_DEFUN([AC_FPM_TRACE],
], [
proc_mem_file=""
AC_MSG_RESULT([no])
- ], [
- AC_MSG_RESULT([skipped (cross compiling)])
])
fi
diff --git a/sapi/fpm/fpm/fastcgi.c b/sapi/fpm/fpm/fastcgi.c
index e2e208aa7..212b6ff1d 100644
--- a/sapi/fpm/fpm/fastcgi.c
+++ b/sapi/fpm/fpm/fastcgi.c
@@ -399,7 +399,7 @@ static inline int fcgi_param_get_eff_len( unsigned char *p, unsigned char *end,
{
int ret = 1;
int zero_found = 0;
- *eff_len = 0;
+ *eff_len = 0;
for (; p != end; ++p) {
if (*p == '\0') {
zero_found = 1;
@@ -427,7 +427,7 @@ static int fcgi_get_params(fcgi_request *req, unsigned char *p, unsigned char *e
char *tmp = buf;
size_t buf_size = sizeof(buf);
int name_len, val_len;
- uint eff_name_len;
+ uint eff_name_len, eff_val_len;
char *s;
int ret = 1;
size_t bytes_consumed;
@@ -453,12 +453,8 @@ static int fcgi_get_params(fcgi_request *req, unsigned char *p, unsigned char *e
ret = 0;
break;
}
-
- /*
- * get the effective length of the name in case it's not a valid string
- * don't do this on the value because it can be binary data
- */
- if (!fcgi_param_get_eff_len(p, p+name_len, &eff_name_len)){
+ if (!fcgi_param_get_eff_len(p, p+name_len, &eff_name_len) ||
+ !fcgi_param_get_eff_len(p+name_len, p+name_len+val_len, &eff_val_len)) {
/* Malicious request */
ret = 0;
break;
@@ -477,7 +473,7 @@ static int fcgi_get_params(fcgi_request *req, unsigned char *p, unsigned char *e
}
memcpy(tmp, p, eff_name_len);
tmp[eff_name_len] = 0;
- s = estrndup((char*)p + name_len, val_len);
+ s = estrndup((char*)p + name_len, eff_val_len);
if (s == NULL) {
ret = 0;
break;
diff --git a/sapi/fpm/fpm/fpm.c b/sapi/fpm/fpm/fpm.c
index dab415d12..96aabbfc4 100644
--- a/sapi/fpm/fpm/fpm.c
+++ b/sapi/fpm/fpm/fpm.c
@@ -37,12 +37,10 @@ struct fpm_globals_s fpm_globals = {
.max_requests = 0,
.is_child = 0,
.test_successful = 0,
- .heartbeat = 0,
- .run_as_root = 0,
- .send_config_signal = 0,
+ .heartbeat = 0
};
-int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root) /* {{{ */
+int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf) /* {{{ */
{
fpm_globals.argc = argc;
fpm_globals.argv = argv;
@@ -51,7 +49,6 @@ int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int t
}
fpm_globals.prefix = prefix;
fpm_globals.pid = pid;
- fpm_globals.run_as_root = run_as_root;
if (0 > fpm_php_init_main() ||
0 > fpm_stdio_init_main() ||
@@ -67,7 +64,7 @@ int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int t
0 > fpm_event_init_main()) {
if (fpm_globals.test_successful) {
- exit(FPM_EXIT_OK);
+ exit(0);
} else {
zlog(ZLOG_ERROR, "FPM initialization failed");
return -1;
diff --git a/sapi/fpm/fpm/fpm.h b/sapi/fpm/fpm/fpm.h
index 7a2903d07..bfeac4d67 100644
--- a/sapi/fpm/fpm/fpm.h
+++ b/sapi/fpm/fpm/fpm.h
@@ -7,37 +7,8 @@
#include <unistd.h>
-#ifdef HAVE_SYSEXITS_H
-#include <sysexits.h>
-#endif
-
-#ifdef EX_OK
-#define FPM_EXIT_OK EX_OK
-#else
-#define FPM_EXIT_OK 0
-#endif
-
-#ifdef EX_USAGE
-#define FPM_EXIT_USAGE EX_USAGE
-#else
-#define FPM_EXIT_USAGE 64
-#endif
-
-#ifdef EX_SOFTWARE
-#define FPM_EXIT_SOFTWARE EX_SOFTWARE
-#else
-#define FPM_EXIT_SOFTWARE 70
-#endif
-
-#ifdef EX_CONFIG
-#define FPM_EXIT_CONFIG EX_CONFIG
-#else
-#define FPM_EXIT_CONFIG 78
-#endif
-
-
int fpm_run(int *max_requests);
-int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root);
+int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf);
struct fpm_globals_s {
pid_t parent_pid;
@@ -54,8 +25,6 @@ struct fpm_globals_s {
int is_child;
int test_successful;
int heartbeat;
- int run_as_root;
- int send_config_signal;
};
extern struct fpm_globals_s fpm_globals;
diff --git a/sapi/fpm/fpm/fpm_children.c b/sapi/fpm/fpm/fpm_children.c
index 84a947433..35058b0ea 100644
--- a/sapi/fpm/fpm/fpm_children.c
+++ b/sapi/fpm/fpm/fpm_children.c
@@ -156,7 +156,7 @@ static void fpm_child_init(struct fpm_worker_pool_s *wp) /* {{{ */
0 > fpm_php_init_child(wp)) {
zlog(ZLOG_ERROR, "[pool %s] child failed to initialize", wp->config->name);
- exit(FPM_EXIT_SOFTWARE);
+ exit(255);
}
}
/* }}} */
@@ -198,7 +198,7 @@ void fpm_children_bury() /* {{{ */
restart_child = 0;
}
- if (WEXITSTATUS(status) != FPM_EXIT_OK) {
+ if (WEXITSTATUS(status) != 0) {
severity = ZLOG_WARNING;
}
diff --git a/sapi/fpm/fpm/fpm_conf.c b/sapi/fpm/fpm/fpm_conf.c
index 1f3258f35..304076d35 100644
--- a/sapi/fpm/fpm/fpm_conf.c
+++ b/sapi/fpm/fpm/fpm_conf.c
@@ -70,7 +70,6 @@ struct fpm_global_config_s fpm_global_config = {
.syslog_facility = -1,
#endif
.process_max = 0,
- .process_priority = 64, /* 64 means unset */
};
static struct fpm_worker_pool_s *current_wp = NULL;
static int ini_recursion = 0;
@@ -93,7 +92,6 @@ static struct ini_value_parser_s ini_fpm_global_options[] = {
{ "emergency_restart_interval", &fpm_conf_set_time, GO(emergency_restart_interval) },
{ "process_control_timeout", &fpm_conf_set_time, GO(process_control_timeout) },
{ "process.max", &fpm_conf_set_integer, GO(process_max) },
- { "process.priority", &fpm_conf_set_integer, GO(process_priority) },
{ "daemonize", &fpm_conf_set_boolean, GO(daemonize) },
{ "rlimit_files", &fpm_conf_set_integer, GO(rlimit_files) },
{ "rlimit_core", &fpm_conf_set_rlimit_core, GO(rlimit_core) },
@@ -114,7 +112,6 @@ static struct ini_value_parser_s ini_fpm_pool_options[] = {
{ "listen.group", &fpm_conf_set_string, WPO(listen_group) },
{ "listen.mode", &fpm_conf_set_string, WPO(listen_mode) },
{ "listen.allowed_clients", &fpm_conf_set_string, WPO(listen_allowed_clients) },
- { "process.priority", &fpm_conf_set_integer, WPO(process_priority) },
{ "pm", &fpm_conf_set_pm, WPO(pm) },
{ "pm.max_children", &fpm_conf_set_integer, WPO(pm_max_children) },
{ "pm.start_servers", &fpm_conf_set_integer, WPO(pm_start_servers) },
@@ -580,7 +577,6 @@ static void *fpm_worker_pool_config_alloc() /* {{{ */
memset(wp->config, 0, sizeof(struct fpm_worker_pool_config_s));
wp->config->listen_backlog = FPM_BACKLOG_DEFAULT;
wp->config->pm_process_idle_timeout = 10; /* 10s by default */
- wp->config->process_priority = 64; /* 64 means unset */
if (!fpm_worker_all_pools) {
fpm_worker_all_pools = wp;
@@ -708,7 +704,7 @@ static int fpm_evaluate_full_path(char **path, struct fpm_worker_pool_s *wp, cha
static int fpm_conf_process_all_pools() /* {{{ */
{
- struct fpm_worker_pool_s *wp, *wp2;
+ struct fpm_worker_pool_s *wp;
if (!fpm_worker_all_pools) {
zlog(ZLOG_ERROR, "No pool defined. at least one pool section must be specified in config file");
@@ -727,8 +723,8 @@ static int fpm_conf_process_all_pools() /* {{{ */
}
}
- /* alert if user is not set only if we are not root*/
- if (!wp->config->user && !geteuid()) {
+ /* user */
+ if (!wp->config->user) {
zlog(ZLOG_ALERT, "[pool %s] user has not been defined", wp->config->name);
return -1;
}
@@ -745,11 +741,6 @@ static int fpm_conf_process_all_pools() /* {{{ */
return -1;
}
- if (wp->config->process_priority != 64 && (wp->config->process_priority < -19 || wp->config->process_priority > 20)) {
- zlog(ZLOG_ERROR, "[pool %s] process.priority must be included into [-19,20]", wp->config->name);
- return -1;
- }
-
/* pm */
if (wp->config->pm != PM_STYLE_STATIC && wp->config->pm != PM_STYLE_DYNAMIC && wp->config->pm != PM_STYLE_ONDEMAND) {
zlog(ZLOG_ALERT, "[pool %s] the process manager is missing (static, dynamic or ondemand)", wp->config->name);
@@ -1053,20 +1044,6 @@ static int fpm_conf_process_all_pools() /* {{{ */
}
}
}
-
- /* ensure 2 pools do not use the same listening address */
- for (wp = fpm_worker_all_pools; wp; wp = wp->next) {
- for (wp2 = fpm_worker_all_pools; wp2; wp2 = wp2->next) {
- if (wp == wp2) {
- continue;
- }
-
- if (wp->config->listen_address && *wp->config->listen_address && wp2->config->listen_address && *wp2->config->listen_address && !strcmp(wp->config->listen_address, wp2->config->listen_address)) {
- zlog(ZLOG_ERROR, "[pool %s] unable to set listen address as it's already used in another pool '%s'", wp2->config->name, wp->config->name);
- return -1;
- }
- }
- }
return 0;
}
/* }}} */
@@ -1126,11 +1103,6 @@ static int fpm_conf_post_process(TSRMLS_D) /* {{{ */
return -1;
}
- if (fpm_global_config.process_priority != 64 && (fpm_global_config.process_priority < -19 || fpm_global_config.process_priority > 20)) {
- zlog(ZLOG_ERROR, "process.priority must be included into [-19,20]");
- return -1;
- }
-
if (!fpm_global_config.error_log) {
fpm_global_config.error_log = strdup("log/php-fpm.log");
}
@@ -1513,11 +1485,6 @@ static void fpm_conf_dump() /* {{{ */
zlog(ZLOG_NOTICE, "\temergency_restart_threshold = %d", fpm_global_config.emergency_restart_threshold);
zlog(ZLOG_NOTICE, "\tprocess_control_timeout = %ds", fpm_global_config.process_control_timeout);
zlog(ZLOG_NOTICE, "\tprocess.max = %d", fpm_global_config.process_max);
- if (fpm_global_config.process_priority == 64) {
- zlog(ZLOG_NOTICE, "\tprocess.priority = undefined");
- } else {
- zlog(ZLOG_NOTICE, "\tprocess.priority = %d", fpm_global_config.process_priority);
- }
zlog(ZLOG_NOTICE, "\tdaemonize = %s", BOOL2STR(fpm_global_config.daemonize));
zlog(ZLOG_NOTICE, "\trlimit_files = %d", fpm_global_config.rlimit_files);
zlog(ZLOG_NOTICE, "\trlimit_core = %d", fpm_global_config.rlimit_core);
@@ -1537,11 +1504,6 @@ static void fpm_conf_dump() /* {{{ */
zlog(ZLOG_NOTICE, "\tlisten.group = %s", STR2STR(wp->config->listen_group));
zlog(ZLOG_NOTICE, "\tlisten.mode = %s", STR2STR(wp->config->listen_mode));
zlog(ZLOG_NOTICE, "\tlisten.allowed_clients = %s", STR2STR(wp->config->listen_allowed_clients));
- if (wp->config->process_priority == 64) {
- zlog(ZLOG_NOTICE, "\tprocess.priority = undefined");
- } else {
- zlog(ZLOG_NOTICE, "\tprocess.priority = %d", wp->config->process_priority);
- }
zlog(ZLOG_NOTICE, "\tpm = %s", PM2STR(wp->config->pm));
zlog(ZLOG_NOTICE, "\tpm.max_children = %d", wp->config->pm_max_children);
zlog(ZLOG_NOTICE, "\tpm.start_servers = %d", wp->config->pm_start_servers);
diff --git a/sapi/fpm/fpm/fpm_conf.h b/sapi/fpm/fpm/fpm_conf.h
index f780f0389..9fbd5064c 100644
--- a/sapi/fpm/fpm/fpm_conf.h
+++ b/sapi/fpm/fpm/fpm_conf.h
@@ -35,7 +35,6 @@ struct fpm_global_config_s {
int emergency_restart_interval;
int process_control_timeout;
int process_max;
- int process_priority;
int daemonize;
int rlimit_files;
int rlimit_core;
@@ -58,7 +57,6 @@ struct fpm_worker_pool_config_s {
char *listen_group;
char *listen_mode;
char *listen_allowed_clients;
- int process_priority;
int pm;
int pm_max_children;
int pm_start_servers;
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
index 83b461b79..14dccbd14 100644
--- a/sapi/fpm/fpm/fpm_main.c
+++ b/sapi/fpm/fpm/fpm_main.c
@@ -154,7 +154,6 @@ static const opt_struct OPTIONS[] = {
{'t', 0, "test"},
{'p', 1, "prefix"},
{'g', 1, "pid"},
- {'R', 0, "allow-to-run-as-root"},
{'-', 0, NULL} /* end of args */
};
@@ -647,38 +646,12 @@ static void sapi_cgi_register_variables(zval *track_vars_array TSRMLS_DC)
}
}
-/* {{{ sapi_cgi_log_fastcgi
- *
- * Ignore level, we want to send all messages through fastcgi
- */
-void sapi_cgi_log_fastcgi(int level, char *message, size_t len)
+static void sapi_cgi_log_message(char *message TSRMLS_DC)
{
- TSRMLS_FETCH();
-
- fcgi_request *request = (fcgi_request*) SG(server_context);
-
- /* ensure we want:
- * - to log (fastcgi.logging in php.ini)
- * - we are currently dealing with a request
- * - the message is not empty
- */
- if (CGIG(fcgi_logging) && request && message && len > 0) {
- char *buf = malloc(len + 2);
- memcpy(buf, message, len);
- memcpy(buf + len, "\n", sizeof("\n"));
- fcgi_write(request, FCGI_STDERR, buf, len+1);
- free(buf);
+ if (CGIG(fcgi_logging)) {
+ zlog(ZLOG_NOTICE, "PHP message: %s", message);
}
}
-/* }}} */
-
-/* {{{ sapi_cgi_log_message
- */
-static void sapi_cgi_log_message(char *message)
-{
- zlog(ZLOG_NOTICE, "PHP message: %s", message);
-}
-/* }}} */
/* {{{ php_cgi_ini_activate_user_config
*/
@@ -927,9 +900,7 @@ static void php_cgi_usage(char *argv0)
" Specify the PID file location.\n"
" -y, --fpm-config <file>\n"
" Specify alternative path to FastCGI process manager config file.\n"
- " -t, --test Test FPM configuration and exit\n"
- " -R, --allow-to-run-as-root\n"
- " Allow pool to run as root (disabled by default)\n",
+ " -t, --test Test FPM configuration and exit\n",
prog, PHP_PREFIX);
}
/* }}} */
@@ -1528,7 +1499,7 @@ static zend_module_entry cgi_module_entry = {
*/
int main(int argc, char *argv[])
{
- int exit_status = FPM_EXIT_OK;
+ int exit_status = SUCCESS;
int cgi = 0, c, use_extended_info = 0;
zend_file_handle file_handle;
@@ -1551,7 +1522,6 @@ int main(int argc, char *argv[])
char *fpm_pid = NULL;
int test_conf = 0;
int php_information = 0;
- int php_allow_to_run_as_root = 0;
#ifdef HAVE_SIGNAL_H
#if defined(SIGPIPE) && defined(SIG_IGN)
@@ -1659,17 +1629,13 @@ int main(int argc, char *argv[])
php_output_end_all(TSRMLS_C);
php_output_deactivate(TSRMLS_C);
fcgi_shutdown();
- exit_status = FPM_EXIT_OK;
+ exit_status = 0;
goto out;
case 'i': /* php info & quit */
php_information = 1;
break;
- case 'R': /* allow to run as root */
- php_allow_to_run_as_root = 1;
- break;
-
default:
case 'h':
case '?':
@@ -1680,7 +1646,7 @@ int main(int argc, char *argv[])
php_output_end_all(TSRMLS_C);
php_output_deactivate(TSRMLS_C);
fcgi_shutdown();
- exit_status = (c == 'h') ? FPM_EXIT_OK : FPM_EXIT_USAGE;
+ exit_status = 0;
goto out;
case 'v': /* show php version & quit */
@@ -1688,7 +1654,7 @@ int main(int argc, char *argv[])
if (php_request_startup(TSRMLS_C) == FAILURE) {
SG(server_context) = NULL;
php_module_shutdown(TSRMLS_C);
- return FPM_EXIT_SOFTWARE;
+ return FAILURE;
}
SG(headers_sent) = 1;
SG(request_info).no_headers = 1;
@@ -1700,7 +1666,7 @@ int main(int argc, char *argv[])
#endif
php_request_shutdown((void *) 0);
fcgi_shutdown();
- exit_status = FPM_EXIT_OK;
+ exit_status = 0;
goto out;
}
}
@@ -1711,14 +1677,14 @@ int main(int argc, char *argv[])
if (php_request_startup(TSRMLS_C) == FAILURE) {
SG(server_context) = NULL;
php_module_shutdown(TSRMLS_C);
- return FPM_EXIT_SOFTWARE;
+ return FAILURE;
}
SG(headers_sent) = 1;
SG(request_info).no_headers = 1;
php_print_info(0xFFFFFFFF TSRMLS_CC);
php_request_shutdown((void *) 0);
fcgi_shutdown();
- exit_status = FPM_EXIT_OK;
+ exit_status = 0;
goto out;
}
@@ -1731,7 +1697,7 @@ int main(int argc, char *argv[])
php_output_end_all(TSRMLS_C);
php_output_deactivate(TSRMLS_C);
fcgi_shutdown();
- exit_status = FPM_EXIT_USAGE;
+ exit_status = 0;
goto out;
}
@@ -1750,7 +1716,7 @@ int main(int argc, char *argv[])
#ifdef ZTS
tsrm_shutdown();
#endif
- return FPM_EXIT_SOFTWARE;
+ return FAILURE;
}
if (use_extended_info) {
@@ -1793,31 +1759,19 @@ consult the installation file that came with this distribution, or visit \n\
*/
tsrm_shutdown();
#endif
- return FPM_EXIT_SOFTWARE;
+ return FAILURE;
}
}
- if (0 > fpm_init(argc, argv, fpm_config ? fpm_config : CGIG(fpm_config), fpm_prefix, fpm_pid, test_conf, php_allow_to_run_as_root)) {
-
- if (fpm_globals.send_config_signal) {
- zlog(ZLOG_DEBUG, "Sending SIGUSR2 (error) to parent %d", getppid());
- kill(getppid(), SIGUSR2);
- }
- return FPM_EXIT_CONFIG;
+ if (0 > fpm_init(argc, argv, fpm_config ? fpm_config : CGIG(fpm_config), fpm_prefix, fpm_pid, test_conf)) {
+ return FAILURE;
}
- if (fpm_globals.send_config_signal) {
- zlog(ZLOG_DEBUG, "Sending SIGUSR1 (OK) to parent %d", getppid());
- kill(getppid(), SIGUSR1);
- }
fpm_is_running = 1;
fcgi_fd = fpm_run(&max_requests);
parent = 0;
- /* onced forked tell zlog to also send messages through sapi_cgi_log_fastcgi() */
- zlog_set_external_logger(sapi_cgi_log_fastcgi);
-
/* make php call us to get _ENV vars */
php_php_import_environment_variables = php_import_environment_variables;
php_import_environment_variables = cgi_php_import_environment_variables;
@@ -1841,7 +1795,7 @@ consult the installation file that came with this distribution, or visit \n\
fcgi_finish_request(&request, 1);
SG(server_context) = NULL;
php_module_shutdown(TSRMLS_C);
- return FPM_EXIT_SOFTWARE;
+ return FAILURE;
}
/* check if request_method has been sent.
@@ -1929,9 +1883,17 @@ fastcgi_request_done:
php_request_shutdown((void *) 0);
+ if (exit_status == 0) {
+ exit_status = EG(exit_status);
+ }
+
requests++;
if (max_requests && (requests == max_requests)) {
fcgi_finish_request(&request, 1);
+ if (max_requests != 1) {
+ /* no need to return exit_status of the last request */
+ exit_status = 0;
+ }
break;
}
/* end of fastcgi loop */
@@ -1945,7 +1907,7 @@ fastcgi_request_done:
free(cgi_sapi_module.ini_entries);
}
} zend_catch {
- exit_status = FPM_EXIT_SOFTWARE;
+ exit_status = 255;
} zend_end_try();
out:
diff --git a/sapi/fpm/fpm/fpm_process_ctl.c b/sapi/fpm/fpm/fpm_process_ctl.c
index 7840d17f8..e698eb0ca 100644
--- a/sapi/fpm/fpm/fpm_process_ctl.c
+++ b/sapi/fpm/fpm/fpm_process_ctl.c
@@ -71,7 +71,7 @@ static void fpm_pctl_exit() /* {{{ */
fpm_conf_unlink_pid();
fpm_cleanups_run(FPM_CLEANUP_PARENT_EXIT_MAIN);
- exit(FPM_EXIT_OK);
+ exit(0);
}
/* }}} */
@@ -100,7 +100,7 @@ static void fpm_pctl_exec() /* {{{ */
fpm_cleanups_run(FPM_CLEANUP_PARENT_EXEC);
execvp(saved_argv[0], saved_argv);
zlog(ZLOG_SYSERROR, "failed to reload: execvp() failed");
- exit(FPM_EXIT_SOFTWARE);
+ exit(1);
}
/* }}} */
diff --git a/sapi/fpm/fpm/fpm_signals.c b/sapi/fpm/fpm/fpm_signals.c
index 656269f1a..8993a860a 100644
--- a/sapi/fpm/fpm/fpm_signals.c
+++ b/sapi/fpm/fpm/fpm_signals.c
@@ -249,15 +249,3 @@ int fpm_signals_get_fd() /* {{{ */
}
/* }}} */
-void fpm_signals_sighandler_exit_ok(pid_t pid) /* {{{ */
-{
- exit(FPM_EXIT_OK);
-}
-/* }}} */
-
-void fpm_signals_sighandler_exit_config(pid_t pid) /* {{{ */
-{
- exit(FPM_EXIT_CONFIG);
-}
-/* }}} */
-
diff --git a/sapi/fpm/fpm/fpm_signals.h b/sapi/fpm/fpm/fpm_signals.h
index 13484cbac..eb80faecf 100644
--- a/sapi/fpm/fpm/fpm_signals.h
+++ b/sapi/fpm/fpm/fpm_signals.h
@@ -11,9 +11,6 @@ int fpm_signals_init_main();
int fpm_signals_init_child();
int fpm_signals_get_fd();
-void fpm_signals_sighandler_exit_ok(pid_t pid);
-void fpm_signals_sighandler_exit_config(pid_t pid);
-
extern const char *fpm_signal_names[NSIG + 1];
#endif
diff --git a/sapi/fpm/fpm/fpm_sockets.c b/sapi/fpm/fpm/fpm_sockets.c
index d24dcccc9..cb4897e9b 100644
--- a/sapi/fpm/fpm/fpm_sockets.c
+++ b/sapi/fpm/fpm/fpm_sockets.c
@@ -179,10 +179,6 @@ static int fpm_sockets_new_listening_socket(struct fpm_worker_pool_s *wp, struct
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &flags, sizeof(flags));
if (wp->listen_address_domain == FPM_AF_UNIX) {
- if (fpm_socket_unix_test_connect((struct sockaddr_un *)sa, socklen) == 0) {
- zlog(ZLOG_ERROR, "An another FPM instance seems to already listen on %s", ((struct sockaddr_un *) sa)->sun_path);
- return -1;
- }
unlink( ((struct sockaddr_un *) sa)->sun_path);
saved_umask = umask(0777 ^ wp->socket_mode);
}
@@ -454,24 +450,3 @@ int fpm_socket_get_listening_queue(int sock, unsigned *cur_lq, unsigned *max_lq)
}
#endif
-
-int fpm_socket_unix_test_connect(struct sockaddr_un *sun, size_t socklen) /* {{{ */
-{
- int fd;
-
- if (!sun || sun->sun_family != AF_UNIX) {
- return -1;
- }
-
- if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
- return -1;
- }
-
- if (connect(fd, (struct sockaddr *)sun, socklen) == -1) {
- return -1;
- }
-
- close(fd);
- return 0;
-}
-/* }}} */
diff --git a/sapi/fpm/fpm/fpm_sockets.h b/sapi/fpm/fpm/fpm_sockets.h
index 5b9c698c2..447fbff4b 100644
--- a/sapi/fpm/fpm/fpm_sockets.h
+++ b/sapi/fpm/fpm/fpm_sockets.h
@@ -5,8 +5,6 @@
#ifndef FPM_MISC_H
#define FPM_MISC_H 1
-#include <sys/types.h>
-#include <sys/socket.h>
#include <unistd.h>
#include <fcntl.h>
@@ -24,7 +22,6 @@
enum fpm_address_domain fpm_sockets_domain_from_address(char *addr);
int fpm_sockets_init_main();
int fpm_socket_get_listening_queue(int sock, unsigned *cur_lq, unsigned *max_lq);
-int fpm_socket_unix_test_connect(struct sockaddr_un *sun, size_t socklen);
static inline int fd_set_blocked(int fd, int blocked) /* {{{ */
diff --git a/sapi/fpm/fpm/fpm_unix.c b/sapi/fpm/fpm/fpm_unix.c
index 5c5e37c3a..17d0b8125 100644
--- a/sapi/fpm/fpm/fpm_unix.c
+++ b/sapi/fpm/fpm/fpm_unix.c
@@ -23,7 +23,6 @@
#include "fpm_clock.h"
#include "fpm_stdio.h"
#include "fpm_unix.h"
-#include "fpm_signals.h"
#include "zlog.h"
size_t fpm_pagesize;
@@ -113,12 +112,12 @@ static int fpm_unix_conf_wp(struct fpm_worker_pool_s *wp) /* {{{ */
}
}
- if (!fpm_globals.run_as_root) {
- if (wp->set_uid == 0 || wp->set_gid == 0) {
- zlog(ZLOG_ERROR, "[pool %s] please specify user and group other than root", wp->config->name);
- return -1;
- }
+#ifndef I_REALLY_WANT_ROOT_PHP
+ if (wp->set_uid == 0 || wp->set_gid == 0) {
+ zlog(ZLOG_ERROR, "[pool %s] please specify user and group other than root", wp->config->name);
+ return -1;
}
+#endif
} else { /* not root */
if (wp->config->user && *wp->config->user) {
zlog(ZLOG_WARNING, "[pool %s] 'user' directive is ignored when FPM is not running as root", wp->config->name);
@@ -129,9 +128,6 @@ static int fpm_unix_conf_wp(struct fpm_worker_pool_s *wp) /* {{{ */
if (wp->config->chroot && *wp->config->chroot) {
zlog(ZLOG_WARNING, "[pool %s] 'chroot' directive is ignored when FPM is not running as root", wp->config->name);
}
- if (wp->config->process_priority != 64) {
- zlog(ZLOG_WARNING, "[pool %s] 'process.priority' directive is ignored when FPM is not running as root", wp->config->name);
- }
/* set up HOME and USER anyway */
pwd = getpwuid(getuid());
@@ -187,14 +183,6 @@ int fpm_unix_init_child(struct fpm_worker_pool_s *wp) /* {{{ */
}
if (is_root) {
-
- if (wp->config->process_priority != 64) {
- if (setpriority(PRIO_PROCESS, 0, wp->config->process_priority) < 0) {
- zlog(ZLOG_SYSERROR, "[pool %s] Unable to set priority for this new process", wp->config->name);
- return -1;
- }
- }
-
if (wp->set_gid) {
if (0 > setgid(wp->set_gid)) {
zlog(ZLOG_SYSERROR, "[pool %s] failed to setgid(%d)", wp->config->name, wp->set_gid);
@@ -229,7 +217,6 @@ int fpm_unix_init_child(struct fpm_worker_pool_s *wp) /* {{{ */
int fpm_unix_init_main() /* {{{ */
{
struct fpm_worker_pool_s *wp;
- int is_root = !geteuid();
if (fpm_global_config.rlimit_files) {
struct rlimit r;
@@ -255,92 +242,23 @@ int fpm_unix_init_main() /* {{{ */
fpm_pagesize = getpagesize();
if (fpm_global_config.daemonize) {
- /*
- * If daemonize, the calling process will die soon
- * and the master process continues to initialize itself.
- *
- * The parent process has then to wait for the master
- * process to initialize to return a consistent exit
- * value. For this pupose, the master process will
- * send USR1 if everything went well and USR2
- * otherwise.
- */
-
- struct sigaction act;
- struct sigaction oldact_usr1;
- struct sigaction oldact_usr2;
- struct timeval tv;
-
- /*
- * set sigaction for USR1 before fork
- * save old sigaction to restore it after
- * fork in the child process (the master process)
- */
- memset(&act, 0, sizeof(act));
- memset(&act, 0, sizeof(oldact_usr1));
- act.sa_handler = fpm_signals_sighandler_exit_ok;
- sigfillset(&act.sa_mask);
- sigaction(SIGUSR1, &act, &oldact_usr1);
-
- /*
- * set sigaction for USR2 before fork
- * save old sigaction to restore it after
- * fork in the child process (the master process)
- */
- memset(&act, 0, sizeof(act));
- memset(&act, 0, sizeof(oldact_usr2));
- act.sa_handler = fpm_signals_sighandler_exit_config;
- sigfillset(&act.sa_mask);
- sigaction(SIGUSR2, &act, &oldact_usr2);
-
- /* then fork */
- pid_t pid = fork();
- switch (pid) {
-
- case -1 : /* error */
+ switch (fork()) {
+ case -1 :
zlog(ZLOG_SYSERROR, "failed to daemonize");
return -1;
-
- case 0 : /* children */
- /* restore USR1 and USR2 sigaction */
- sigaction(SIGUSR1, &oldact_usr1, NULL);
- sigaction(SIGUSR2, &oldact_usr2, NULL);
- fpm_globals.send_config_signal = 1;
+ case 0 :
break;
-
- default : /* parent */
+ default :
fpm_cleanups_run(FPM_CLEANUP_PARENT_EXIT);
-
- /*
- * wait for 10s before exiting with error
- * the child is supposed to send USR1 or USR2 to tell the parent
- * how it goes for it
- */
- tv.tv_sec = 10;
- tv.tv_usec = 0;
- zlog(ZLOG_DEBUG, "The calling process is waiting for the master process to ping");
- select(0, NULL, NULL, NULL, &tv);
- exit(FPM_EXIT_SOFTWARE);
+ exit(0);
}
}
- /* continue as a child */
setsid();
if (0 > fpm_clock_init()) {
return -1;
}
- if (fpm_global_config.process_priority != 64) {
- if (is_root) {
- if (setpriority(PRIO_PROCESS, 0, fpm_global_config.process_priority) < 0) {
- zlog(ZLOG_SYSERROR, "Unable to set priority for the master process");
- return -1;
- }
- } else {
- zlog(ZLOG_WARNING, "'process.priority' directive is ignored when FPM is not running as root");
- }
- }
-
fpm_globals.parent_pid = getpid();
for (wp = fpm_worker_all_pools; wp; wp = wp->next) {
if (0 > fpm_unix_conf_wp(wp)) {
diff --git a/sapi/fpm/fpm/zlog.c b/sapi/fpm/fpm/zlog.c
index 80db9d837..b127ec16f 100644
--- a/sapi/fpm/fpm/zlog.c
+++ b/sapi/fpm/fpm/zlog.c
@@ -22,7 +22,6 @@
static int zlog_fd = -1;
static int zlog_level = ZLOG_NOTICE;
static int launched = 0;
-static void (*external_logger)(int, char *, size_t) = NULL;
static const char *level_names[] = {
[ZLOG_DEBUG] = "DEBUG",
@@ -42,12 +41,6 @@ const int syslog_priorities[] = {
};
#endif
-void zlog_set_external_logger(void (*logger)(int, char *, size_t)) /* {{{ */
-{
- external_logger = logger;
-}
-/* }}} */
-
const char *zlog_get_level_name(int log_level) /* {{{ */
{
if (log_level < 0) {
@@ -108,19 +101,6 @@ void zlog_ex(const char *function, int line, int flags, const char *fmt, ...) /*
int truncated = 0;
int saved_errno;
- if (external_logger) {
- va_start(args, fmt);
- len = vsnprintf(buf, buf_size, fmt, args);
- va_end(args);
- if (len >= buf_size) {
- memcpy(buf + buf_size - sizeof("..."), "...", sizeof("...") - 1);
- len = buf_size - 1;
- }
- external_logger(flags & ZLOG_LEVEL_MASK, buf, len);
- len = 0;
- memset(buf, '\0', buf_size);
- }
-
if ((flags & ZLOG_LEVEL_MASK) < zlog_level) {
return;
}
diff --git a/sapi/fpm/fpm/zlog.h b/sapi/fpm/fpm/zlog.h
index 1945922da..e6a5c019a 100644
--- a/sapi/fpm/fpm/zlog.h
+++ b/sapi/fpm/fpm/zlog.h
@@ -9,7 +9,6 @@
struct timeval;
-void zlog_set_external_logger(void (*logger)(int, char *, size_t));
int zlog_set_fd(int new_fd);
int zlog_set_level(int new_value);
const char *zlog_get_level_name(int log_level);
diff --git a/sapi/fpm/php-fpm.conf.in b/sapi/fpm/php-fpm.conf.in
index a63dec709..2dad9d7f5 100644
--- a/sapi/fpm/php-fpm.conf.in
+++ b/sapi/fpm/php-fpm.conf.in
@@ -76,14 +76,6 @@
; Default Value: 0
; process.max = 128
-; Specify the nice(2) priority to apply to the master process (only if set)
-; The value can vary from -19 (highest priority) to 20 (lower priority)
-; Note: - It will only work if the FPM master process is launched as root
-; - The pool process will inherit the master process priority
-; unless it specified otherwise
-; Default Value: no set
-; process.priority = -19
-
; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
; Default Value: yes
;daemonize = yes
@@ -171,14 +163,6 @@ listen = 127.0.0.1:9000
; Default Value: any
;listen.allowed_clients = 127.0.0.1
-; Specify the nice(2) priority to apply to the pool processes (only if set)
-; The value can vary from -19 (highest priority) to 20 (lower priority)
-; Note: - It will only work if the FPM master process is launched as root
-; - The pool processes will inherit the master process priority
-; unless it specified otherwise
-; Default Value: no set
-; priority = -19
-
; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
diff --git a/win32/registry.c b/win32/registry.c
index 45e842b45..35b411f4c 100644
--- a/win32/registry.c
+++ b/win32/registry.c
@@ -77,16 +77,11 @@ static int LoadDirectory(HashTable *directories, HKEY key, char *path, int path_
value_len = max_value+1;
if (RegEnumValue(key, i, name, &name_len, NULL, &type, value, &value_len) == ERROR_SUCCESS) {
if ((type == REG_SZ) || (type == REG_EXPAND_SZ)) {
- ht = (HashTable*)malloc(sizeof(HashTable));
if (!ht) {
- return ret;
+ ht = (HashTable*)malloc(sizeof(HashTable));
+ zend_hash_init(ht, 0, NULL, ZVAL_INTERNAL_PTR_DTOR, 1);
}
- zend_hash_init(ht, 0, NULL, ZVAL_INTERNAL_PTR_DTOR, 1);
-
data = (zval*)malloc(sizeof(zval));
- if (!data) {
- return ret;
- }
INIT_PZVAL(data);
Z_STRVAL_P(data) = zend_strndup(value, value_len-1);
Z_STRLEN_P(data) = value_len-1;
@@ -179,9 +174,6 @@ void UpdateIniFromRegistry(char *path TSRMLS_DC)
if (!PW32G(registry_directories)) {
PW32G(registry_directories) = (HashTable*)malloc(sizeof(HashTable));
- if (!PW32G(registry_directories)) {
- return;
- }
zend_hash_init(PW32G(registry_directories), 0, NULL, delete_internal_hashtable, 1);
if (!OpenPhpRegistryKey("\\Per Directory Values", &PW32G(registry_key))) {
PW32G(registry_key) = NULL;