summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2014-05-27 16:54:58 +0200
committerOndřej Surý <ondrej@sury.org>2014-05-27 16:54:58 +0200
commit32c3fbba663e5b1da38bdd2d84b0a9a78271ddfa (patch)
tree67a05c22fdb6ad63666fb043c28701bbd6225c9f /ext
parent4bbffbee21093458feadd96f93b96d4627461cff (diff)
downloadphp-32c3fbba663e5b1da38bdd2d84b0a9a78271ddfa.tar.gz
New upstream version 5.6.0~beta3+dfsgupstream/5.6.0_beta3+dfsg
Diffstat (limited to 'ext')
-rw-r--r--ext/bz2/bz2.c6
-rw-r--r--ext/curl/tests/bug27023.phpt11
-rw-r--r--ext/curl/tests/bug27023_2.phpt44
-rw-r--r--ext/curl/tests/bug45161.phpt3
-rw-r--r--ext/curl/tests/bug46711.phpt3
-rw-r--r--ext/curl/tests/bug48203.phpt13
-rw-r--r--ext/curl/tests/bug48203_multi.phpt11
-rw-r--r--ext/curl/tests/bug48207.phpt5
-rw-r--r--ext/curl/tests/bug54798.phpt10
-rw-r--r--ext/curl/tests/bug54995.phpt12
-rw-r--r--ext/curl/tests/bug55767.phpt6
-rw-r--r--ext/curl/tests/bug66109.phpt13
-rw-r--r--ext/curl/tests/curl_CURLOPT_READDATA.phpt6
-rw-r--r--ext/curl/tests/curl_basic_001.phpt9
-rw-r--r--ext/curl/tests/curl_basic_002.phpt8
-rw-r--r--ext/curl/tests/curl_basic_003.phpt8
-rw-r--r--ext/curl/tests/curl_basic_004.phpt8
-rw-r--r--ext/curl/tests/curl_basic_005.phpt8
-rw-r--r--ext/curl/tests/curl_basic_006.phpt16
-rw-r--r--ext/curl/tests/curl_basic_011.phpt5
-rw-r--r--ext/curl/tests/curl_basic_012.phpt5
-rw-r--r--ext/curl/tests/curl_basic_013.phpt5
-rw-r--r--ext/curl/tests/curl_basic_017.phpt5
-rw-r--r--ext/curl/tests/curl_basic_018.phpt5
-rw-r--r--ext/curl/tests/curl_basic_019.phpt11
-rw-r--r--ext/curl/tests/curl_basic_020.phpt8
-rw-r--r--ext/curl/tests/curl_basic_021.phpt8
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_001.phpt5
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_002.phpt5
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_004.phpt5
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_005.phpt5
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_006.phpt5
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_007.phpt5
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_008.phpt5
-rw-r--r--ext/curl/tests/curl_file_deleted_before_curl_close.phpt6
-rw-r--r--ext/curl/tests/curl_file_upload.phpt14
-rw-r--r--ext/curl/tests/curl_multi_getcontent_basic3.phpt10
-rw-r--r--ext/curl/tests/curl_setopt_array_basic.phpt5
-rw-r--r--ext/curl/tests/curl_setopt_basic002.phpt5
-rw-r--r--ext/curl/tests/curl_setopt_basic003.phpt5
-rw-r--r--ext/curl/tests/curl_setopt_basic004.phpt5
-rw-r--r--ext/curl/tests/curl_version_error.phpt9
-rw-r--r--ext/curl/tests/curl_version_variation1.phpt9
-rw-r--r--ext/curl/tests/curl_writeheader_callback.phpt14
-rw-r--r--ext/curl/tests/server.inc56
-rw-r--r--ext/curl/tests/skipif.inc7
-rw-r--r--ext/date/lib/parse_date.c13
-rw-r--r--ext/date/lib/parse_date.re11
-rw-r--r--ext/date/lib/timezonedb.h1200
-rw-r--r--ext/date/tests/bug67251.phpt38
-rw-r--r--ext/date/tests/bug67253.phpt44
-rwxr-xr-xext/ext_skel2
-rw-r--r--ext/fileinfo/libmagic.patch12
-rw-r--r--ext/fileinfo/libmagic/strcasestr.c2
-rw-r--r--ext/gd/gd.c8
-rw-r--r--ext/gd/tests/bug67248.phpt27
-rw-r--r--ext/interbase/php_ibase_includes.h1
-rw-r--r--ext/mbstring/php_mbregex.c4
-rw-r--r--ext/mbstring/tests/mb_eregi_replace.phpt3
-rw-r--r--ext/mysqli/mysqli_nonapi.c8
-rw-r--r--ext/mysqli/mysqli_priv.h2
-rw-r--r--ext/pcre/pcrelib/pcre_compile.c2
-rw-r--r--ext/pcre/tests/bug67238.phpt10
-rw-r--r--ext/phar/phar_object.c2
-rw-r--r--ext/session/tests/031.phpt1
-rw-r--r--ext/session/tests/session_set_save_handler_class_005.phpt1
-rw-r--r--ext/session/tests/session_set_save_handler_class_012.phpt1
-rw-r--r--ext/simplexml/simplexml.c12
-rw-r--r--ext/simplexml/tests/SimpleXMLElement_getDocNamespaces.phpt9
-rw-r--r--ext/simplexml/tests/SimpleXMLElement_xpath.phpt8
-rw-r--r--ext/spl/spl_fixedarray.c2
-rw-r--r--ext/spl/tests/bug67247.phpt13
-rw-r--r--ext/standard/html.c4
-rw-r--r--ext/standard/iptc.c3
-rw-r--r--ext/standard/php_fopen_wrapper.c23
-rw-r--r--ext/standard/streamsfuncs.c22
-rw-r--r--ext/standard/tests/image/bug67250.phpt8
-rw-r--r--ext/standard/tests/strings/bug67252.phpt13
-rw-r--r--ext/standard/uuencode.c3
79 files changed, 1135 insertions, 809 deletions
diff --git a/ext/bz2/bz2.c b/ext/bz2/bz2.c
index cc845584f..f310289d7 100644
--- a/ext/bz2/bz2.c
+++ b/ext/bz2/bz2.c
@@ -230,6 +230,9 @@ PHP_BZ2_API php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper,
#endif
if (php_check_open_basedir(path_copy TSRMLS_CC)) {
+#ifdef VIRTUAL_DIR
+ efree(path_copy);
+#endif
return NULL;
}
@@ -239,6 +242,9 @@ PHP_BZ2_API php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper,
if (opened_path && bz_file) {
*opened_path = estrdup(path_copy);
}
+#ifdef VIRTUAL_DIR
+ efree(path_copy);
+#endif
path_copy = NULL;
if (bz_file == NULL) {
diff --git a/ext/curl/tests/bug27023.phpt b/ext/curl/tests/bug27023.phpt
index 62effec99..fce69f570 100644
--- a/ext/curl/tests/bug27023.phpt
+++ b/ext/curl/tests/bug27023.phpt
@@ -4,18 +4,15 @@ Bug #27023 (CURLOPT_POSTFIELDS does not parse content types for files)
error_reporting = E_ALL & ~E_DEPRECATED
--SKIPIF--
<?php
-if (!extension_loaded("curl")) {
- exit("skip curl extension not loaded");
-}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
+include 'skipif.inc';
?>
--FILE--
<?php
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
$ch = curl_init();
+curl_setopt($ch, CURLOPT_SAFE_UPLOAD, 0);
curl_setopt($ch, CURLOPT_URL, "{$host}/get.php?test=file");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
diff --git a/ext/curl/tests/bug27023_2.phpt b/ext/curl/tests/bug27023_2.phpt
new file mode 100644
index 000000000..c878ebac3
--- /dev/null
+++ b/ext/curl/tests/bug27023_2.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Bug #27023 (CURLOPT_POSTFIELDS does not parse content types for files)
+--INI--
+error_reporting = E_ALL & ~E_DEPRECATED
+--SKIPIF--
+<?php include 'skipif.inc'; ?>
+--FILE--
+<?php
+
+include 'server.inc';
+$host = curl_cli_server_start();
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_SAFE_UPLOAD, 1);
+curl_setopt($ch, CURLOPT_URL, "{$host}/get.php?test=file");
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+
+$file = curl_file_create(__DIR__ . '/curl_testdata1.txt');
+$params = array('file' => $file);
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+$file = curl_file_create(__DIR__ . '/curl_testdata1.txt', "text/plain");
+$params = array('file' => $file);
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+$file = curl_file_create(__DIR__ . '/curl_testdata1.txt', null, "foo.txt");
+$params = array('file' => $file);
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+$file = curl_file_create(__DIR__ . '/curl_testdata1.txt', "text/plain", "foo.txt");
+$params = array('file' => $file);
+curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+var_dump(curl_exec($ch));
+
+
+curl_close($ch);
+?>
+--EXPECTF--
+string(%d) "curl_testdata1.txt|application/octet-stream"
+string(%d) "curl_testdata1.txt|text/plain"
+string(%d) "foo.txt|application/octet-stream"
+string(%d) "foo.txt|text/plain"
diff --git a/ext/curl/tests/bug45161.phpt b/ext/curl/tests/bug45161.phpt
index 9fdc7a7e2..bfcd24400 100644
--- a/ext/curl/tests/bug45161.phpt
+++ b/ext/curl/tests/bug45161.phpt
@@ -8,9 +8,6 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
if (!extension_loaded("curl")) {
exit("skip curl extension not loaded");
}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
$curl_version = curl_version();
if ($curl_version['version_number'] < 0x071100) {
exit("skip: test works only with curl >= 7.17.0");
diff --git a/ext/curl/tests/bug46711.phpt b/ext/curl/tests/bug46711.phpt
index 8eef5562f..3149c45d7 100644
--- a/ext/curl/tests/bug46711.phpt
+++ b/ext/curl/tests/bug46711.phpt
@@ -5,9 +5,6 @@ Bug #46711 (lost memory when foreach is used for values passed to curl_setopt())
if (!extension_loaded("curl")) {
exit("skip curl extension not loaded");
}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
?>
--FILE--
<?php
diff --git a/ext/curl/tests/bug48203.phpt b/ext/curl/tests/bug48203.phpt
index d8f4d2269..aae7fc51a 100644
--- a/ext/curl/tests/bug48203.phpt
+++ b/ext/curl/tests/bug48203.phpt
@@ -1,24 +1,17 @@
--TEST--
Bug #48203 (Crash when CURLOPT_STDERR is set to regular file)
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) {
- exit("skip curl extension not loaded");
-}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
-
+include 'server.inc';
$fp = fopen(dirname(__FILE__) . '/bug48203.tmp', 'w');
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $fp);
-curl_setopt($ch, CURLOPT_URL, getenv('PHP_CURL_HTTP_REMOTE_SERVER'));
+curl_setopt($ch, CURLOPT_URL, curl_cli_server_start());
fclose($fp); // <-- premature close of $fp caused a crash!
diff --git a/ext/curl/tests/bug48203_multi.phpt b/ext/curl/tests/bug48203_multi.phpt
index 501b77843..e28c990e9 100644
--- a/ext/curl/tests/bug48203_multi.phpt
+++ b/ext/curl/tests/bug48203_multi.phpt
@@ -2,16 +2,11 @@
Variation of bug #48203 with curl_multi_exec (Crash when file pointers passed to curl are closed before calling curl_multi_exec)
--SKIPIF--
<?php
-if (!extension_loaded("curl")) {
- exit("skip curl extension not loaded");
-}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
+include 'skipif.inc';
?>
--FILE--
<?php
-
+include 'server.inc';
function checkForClosedFilePointer($curl_option, $description) {
$fp = fopen(dirname(__FILE__) . '/bug48203.tmp', 'w');
@@ -21,7 +16,7 @@ function checkForClosedFilePointer($curl_option, $description) {
$options = array(
CURLOPT_RETURNTRANSFER => 1,
$curl_option => $fp,
- CURLOPT_URL => getenv("PHP_CURL_HTTP_REMOTE_SERVER")
+ CURLOPT_URL => curl_cli_server_start()
);
// we also need to set CURLOPT_VERBOSE to test CURLOPT_STDERR properly
diff --git a/ext/curl/tests/bug48207.phpt b/ext/curl/tests/bug48207.phpt
index 6ac16f5ea..a3cd81544 100644
--- a/ext/curl/tests/bug48207.phpt
+++ b/ext/curl/tests/bug48207.phpt
@@ -4,7 +4,7 @@ Test curl_setopt() CURLOPT_FILE readonly file handle
Mark van der Velden
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl")) print "skip"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/*
@@ -14,7 +14,8 @@ Mark van der Velden
*/
// Figure out what handler to use
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
if(!empty($host)) {
// Use the set Environment variable
diff --git a/ext/curl/tests/bug54798.phpt b/ext/curl/tests/bug54798.phpt
index afd98cb87..4a9b99994 100644
--- a/ext/curl/tests/bug54798.phpt
+++ b/ext/curl/tests/bug54798.phpt
@@ -2,12 +2,7 @@
Bug #54798 (Segfault when CURLOPT_STDERR file pointer is closed before calling curl_exec)
--SKIPIF--
<?php
-if (!extension_loaded("curl")) {
- exit("skip curl extension not loaded");
-}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
+include 'skipif.inc';
?>
--FILE--
<?php
@@ -47,7 +42,8 @@ $options_to_check = array(
"CURLOPT_INFILE"
);
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
foreach($options_to_check as $option) {
checkForClosedFilePointer($host, constant($option), $option);
}
diff --git a/ext/curl/tests/bug54995.phpt b/ext/curl/tests/bug54995.phpt
index 0f3f50f34..4af59948b 100644
--- a/ext/curl/tests/bug54995.phpt
+++ b/ext/curl/tests/bug54995.phpt
@@ -2,20 +2,16 @@
Bug #54995 (Missing CURLINFO_RESPONSE_CODE support)
--SKIPIF--
<?php
-if (!extension_loaded("curl")) {
- exit("skip curl extension not loaded");
-}
+include 'skipif.inc';
+
if ($curl_version['version_number'] > 0x070a08) {
exit("skip: tests works a versions of curl >= 7.10.8");
}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
?>
--FILE--
<?php
-
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "{$host}/get.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
diff --git a/ext/curl/tests/bug55767.phpt b/ext/curl/tests/bug55767.phpt
index 321f67ba6..161ced0bf 100644
--- a/ext/curl/tests/bug55767.phpt
+++ b/ext/curl/tests/bug55767.phpt
@@ -2,8 +2,7 @@
Test curl_opt() function with POST params from array with a numeric key
--SKIPIF--
<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
+include 'skipinf.inc';
?>
--FILE--
<?php
@@ -13,7 +12,8 @@ if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_R
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl sending through GET an POST ***' . "\n";
diff --git a/ext/curl/tests/bug66109.phpt b/ext/curl/tests/bug66109.phpt
index aacfba438..5a18e9729 100644
--- a/ext/curl/tests/bug66109.phpt
+++ b/ext/curl/tests/bug66109.phpt
@@ -1,18 +1,11 @@
--TEST--
Bug #66109 (Option CURLOPT_CUSTOMREQUEST can't be reset to default.)
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) {
- exit("skip curl extension not loaded");
-}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
-
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "{$host}/get.php?test=method");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
diff --git a/ext/curl/tests/curl_CURLOPT_READDATA.phpt b/ext/curl/tests/curl_CURLOPT_READDATA.phpt
index ea63d445a..25bd0e9b4 100644
--- a/ext/curl/tests/curl_CURLOPT_READDATA.phpt
+++ b/ext/curl/tests/curl_CURLOPT_READDATA.phpt
@@ -4,12 +4,14 @@ Test CURLOPT_READDATA without a callback function
Mattijs Hoitink mattijshoitink@gmail.com
#Testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
+include 'server.inc';
+$host = curl_cli_server_start();
// The URL to POST to
-$url = getenv('PHP_CURL_HTTP_REMOTE_SERVER') . '/get.php?test=post';
+$url = $host . '/get.php?test=post';
// Create a temporary file to read the data from
$tempname = tempnam(sys_get_temp_dir(), 'CURL_DATA');
diff --git a/ext/curl/tests/curl_basic_001.phpt b/ext/curl/tests/curl_basic_001.phpt
index fa362b33c..4921b69bd 100644
--- a/ext/curl/tests/curl_basic_001.phpt
+++ b/ext/curl/tests/curl_basic_001.phpt
@@ -4,10 +4,7 @@ Test curl_exec() function with basic functionality
Sebastian Deutsch <sebastian.deutsch@9elements.com>
TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_exec(resource ch)
@@ -15,8 +12,8 @@ if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_R
* Source code: ext/curl/interface.c
* Alias to functions:
*/
-
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo "*** Testing curl_exec() : basic functionality ***\n";
diff --git a/ext/curl/tests/curl_basic_002.phpt b/ext/curl/tests/curl_basic_002.phpt
index e46f323b5..69aef4b82 100644
--- a/ext/curl/tests/curl_basic_002.phpt
+++ b/ext/curl/tests/curl_basic_002.phpt
@@ -4,10 +4,7 @@ Test curl_opt() function with CURLOPT_RETURNTRANSFER parameter set to 1
Sebastian Deutsch <sebastian.deutsch@9elements.com>
TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -16,7 +13,8 @@ if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_R
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ***' . "\n";
diff --git a/ext/curl/tests/curl_basic_003.phpt b/ext/curl/tests/curl_basic_003.phpt
index eb2aecdd8..9c5967db8 100644
--- a/ext/curl/tests/curl_basic_003.phpt
+++ b/ext/curl/tests/curl_basic_003.phpt
@@ -4,10 +4,7 @@ Test curl_opt() function with POST parameters
Sebastian Deutsch <sebastian.deutsch@9elements.com>
TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -16,7 +13,8 @@ if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_R
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl sending through GET an POST ***' . "\n";
diff --git a/ext/curl/tests/curl_basic_004.phpt b/ext/curl/tests/curl_basic_004.phpt
index ea2eeca87..08dc7a100 100644
--- a/ext/curl/tests/curl_basic_004.phpt
+++ b/ext/curl/tests/curl_basic_004.phpt
@@ -4,10 +4,7 @@ Test curl_opt() function with setting referer
Sebastian Deutsch <sebastian.deutsch@9elements.com>
TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -16,7 +13,8 @@ if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_R
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl setting referer ***' . "\n";
diff --git a/ext/curl/tests/curl_basic_005.phpt b/ext/curl/tests/curl_basic_005.phpt
index 9285c108e..200db765d 100644
--- a/ext/curl/tests/curl_basic_005.phpt
+++ b/ext/curl/tests/curl_basic_005.phpt
@@ -4,10 +4,7 @@ Test curl_opt() function with user agent
Sebastian Deutsch <sebastian.deutsch@9elements.com>
TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -16,7 +13,8 @@ if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_R
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl with user agent ***' . "\n";
diff --git a/ext/curl/tests/curl_basic_006.phpt b/ext/curl/tests/curl_basic_006.phpt
index 5f1a4f483..e48a5ba70 100644
--- a/ext/curl/tests/curl_basic_006.phpt
+++ b/ext/curl/tests/curl_basic_006.phpt
@@ -4,10 +4,7 @@ Test curl_opt() function with CURLOPT_WRITEFUNCTION parameter set to a closure
?
TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -16,23 +13,26 @@ if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_R
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl_setopt($ch, CURLOPT_WRITEFUNCTION, <closure>); ***' . "\n";
$url = "{$host}/get.php?test=get";
$ch = curl_init();
-
+ $alldata = '';
ob_start(); // start output buffering
curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $data) {
- echo 'Data: '.$data;
+ $GLOBALS['alldata'] .= $data;
return strlen ($data);
});
-
+
curl_exec($ch);
curl_close($ch);
+ ob_end_flush();
+ echo "Data: $alldata";
?>
===DONE===
--EXPECTF--
diff --git a/ext/curl/tests/curl_basic_011.phpt b/ext/curl/tests/curl_basic_011.phpt
index 10c90b123..4e3308240 100644
--- a/ext/curl/tests/curl_basic_011.phpt
+++ b/ext/curl/tests/curl_basic_011.phpt
@@ -3,7 +3,7 @@ Test curl_opt() function with COOKIE
--CREDITS--
TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com>
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv(b'PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -12,7 +12,8 @@ TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com>
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl with cookie ***' . "\n";
diff --git a/ext/curl/tests/curl_basic_012.phpt b/ext/curl/tests/curl_basic_012.phpt
index e4706fad4..f136880df 100644
--- a/ext/curl/tests/curl_basic_012.phpt
+++ b/ext/curl/tests/curl_basic_012.phpt
@@ -3,7 +3,7 @@ Test curl_opt() function with CURLOPT_HTTP_VERSION/CURL_HTTP_VERSION_1_0
--CREDITS--
TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com>
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv(b'PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -12,7 +12,8 @@ TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com>
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl with HTTP/1.0 ***' . "\n";
diff --git a/ext/curl/tests/curl_basic_013.phpt b/ext/curl/tests/curl_basic_013.phpt
index c49d187be..6d09517e8 100644
--- a/ext/curl/tests/curl_basic_013.phpt
+++ b/ext/curl/tests/curl_basic_013.phpt
@@ -3,7 +3,7 @@ Test curl_opt() function with CURLOPT_HTTP_VERSION/CURL_HTTP_VERSION_1_1
--CREDITS--
TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com>
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv(b'PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -12,7 +12,8 @@ TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com>
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo '*** Testing curl with HTTP/1.1 ***' . "\n";
diff --git a/ext/curl/tests/curl_basic_017.phpt b/ext/curl/tests/curl_basic_017.phpt
index 09247b2c6..dc0bee926 100644
--- a/ext/curl/tests/curl_basic_017.phpt
+++ b/ext/curl/tests/curl_basic_017.phpt
@@ -3,7 +3,7 @@ Test curl_multi_exec() function with basic functionality
--CREDITS--
TestFest 2009 - AFUP - Thomas Rabaix <thomas.rabaix@gmail.com>
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_multi_exec(resource ch)
@@ -12,7 +12,8 @@ TestFest 2009 - AFUP - Thomas Rabaix <thomas.rabaix@gmail.com>
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo "*** Testing curl_exec() : basic functionality ***\n";
diff --git a/ext/curl/tests/curl_basic_018.phpt b/ext/curl/tests/curl_basic_018.phpt
index 7cffb89f0..359421fc0 100644
--- a/ext/curl/tests/curl_basic_018.phpt
+++ b/ext/curl/tests/curl_basic_018.phpt
@@ -3,7 +3,7 @@ Test curl_setopt() with curl_multi function with basic functionality
--CREDITS--
TestFest 2009 - AFUP - Thomas Rabaix <thomas.rabaix@gmail.com>
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/* Prototype : bool curl_setopt(resource ch, int option, mixed value)
@@ -12,7 +12,8 @@ TestFest 2009 - AFUP - Thomas Rabaix <thomas.rabaix@gmail.com>
* Alias to functions:
*/
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
// start testing
echo "*** Testing curl_exec() : basic functionality ***\n";
diff --git a/ext/curl/tests/curl_basic_019.phpt b/ext/curl/tests/curl_basic_019.phpt
index ab605a8c7..2c58500ef 100644
--- a/ext/curl/tests/curl_basic_019.phpt
+++ b/ext/curl/tests/curl_basic_019.phpt
@@ -3,22 +3,19 @@ Test curl_getinfo() function with CURLINFO_EFFECTIVE_URL parameter
--CREDITS--
Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
- $url = "{$host}/get.php?test=";
+ $url = "http://{$host}/get.php?test=";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);
$info = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
var_dump($url == $info);
-
curl_close($ch);
?>
===DONE===
diff --git a/ext/curl/tests/curl_basic_020.phpt b/ext/curl/tests/curl_basic_020.phpt
index d62205350..1227ad326 100644
--- a/ext/curl/tests/curl_basic_020.phpt
+++ b/ext/curl/tests/curl_basic_020.phpt
@@ -3,13 +3,11 @@ Test curl_getinfo() function with CURLINFO_HTTP_CODE parameter
--CREDITS--
Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
$url = "{$host}/get.php?test=";
$ch = curl_init();
diff --git a/ext/curl/tests/curl_basic_021.phpt b/ext/curl/tests/curl_basic_021.phpt
index 3b4798d51..d9f5a90be 100644
--- a/ext/curl/tests/curl_basic_021.phpt
+++ b/ext/curl/tests/curl_basic_021.phpt
@@ -3,13 +3,11 @@ Test curl_getinfo() function with CURLINFO_CONTENT_TYPE parameter
--CREDITS--
Jean-Marc Fontaine <jmf@durcommefaire.net>
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
$url = "{$host}/get.php?test=contenttype";
$ch = curl_init();
diff --git a/ext/curl/tests/curl_copy_handle_basic_001.phpt b/ext/curl/tests/curl_copy_handle_basic_001.phpt
index f1b4db3ce..aafa41ee2 100644
--- a/ext/curl/tests/curl_copy_handle_basic_001.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_001.phpt
@@ -4,11 +4,12 @@ Test curl_copy_handle() with simple get
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
echo '*** Testing curl copy handle with simple GET ***' . "\n";
diff --git a/ext/curl/tests/curl_copy_handle_basic_002.phpt b/ext/curl/tests/curl_copy_handle_basic_002.phpt
index 9ab33635f..6e8214ad2 100644
--- a/ext/curl/tests/curl_copy_handle_basic_002.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_002.phpt
@@ -4,10 +4,11 @@ Test curl_copy_handle() with simple POST
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
echo '*** Testing curl copy handle with simple POST ***' . "\n";
diff --git a/ext/curl/tests/curl_copy_handle_basic_004.phpt b/ext/curl/tests/curl_copy_handle_basic_004.phpt
index 9b794e91b..c690180a5 100644
--- a/ext/curl/tests/curl_copy_handle_basic_004.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_004.phpt
@@ -4,11 +4,12 @@ Test curl_copy_handle() after exec()
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
echo '*** Test curl_copy_handle() after exec() ***' . "\n";
diff --git a/ext/curl/tests/curl_copy_handle_basic_005.phpt b/ext/curl/tests/curl_copy_handle_basic_005.phpt
index aa9e2fa99..e92603324 100644
--- a/ext/curl/tests/curl_copy_handle_basic_005.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_005.phpt
@@ -4,11 +4,12 @@ Test curl_copy_handle() after exec() with POST
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
echo '*** Test curl_copy_handle() after exec() with POST ***' . "\n";
diff --git a/ext/curl/tests/curl_copy_handle_basic_006.phpt b/ext/curl/tests/curl_copy_handle_basic_006.phpt
index defc0f232..0a5c2a25e 100644
--- a/ext/curl/tests/curl_copy_handle_basic_006.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_006.phpt
@@ -4,11 +4,12 @@ Test curl_copy_handle() with User Agent
Rick Buitenman <rick@meritos.nl>
#testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
echo '*** Testing curl copy handle with User Agent ***' . "\n";
diff --git a/ext/curl/tests/curl_copy_handle_basic_007.phpt b/ext/curl/tests/curl_copy_handle_basic_007.phpt
index aa7306c1c..6334d2a4b 100644
--- a/ext/curl/tests/curl_copy_handle_basic_007.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_007.phpt
@@ -1,10 +1,11 @@
--TEST--
Test curl_copy_handle() with simple POST
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
echo '*** Testing curl copy handle with simple POST using array as arguments ***' . "\n";
diff --git a/ext/curl/tests/curl_copy_handle_basic_008.phpt b/ext/curl/tests/curl_copy_handle_basic_008.phpt
index 692c2df19..cdb7de374 100644
--- a/ext/curl/tests/curl_copy_handle_basic_008.phpt
+++ b/ext/curl/tests/curl_copy_handle_basic_008.phpt
@@ -1,10 +1,11 @@
--TEST--
Test curl_copy_handle() with CURLOPT_PROGRESSFUNCTION
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
$url = "{$host}/get.php";
$ch = curl_init($url);
diff --git a/ext/curl/tests/curl_file_deleted_before_curl_close.phpt b/ext/curl/tests/curl_file_deleted_before_curl_close.phpt
index 3a4d949e7..5e806add0 100644
--- a/ext/curl/tests/curl_file_deleted_before_curl_close.phpt
+++ b/ext/curl/tests/curl_file_deleted_before_curl_close.phpt
@@ -3,11 +3,13 @@ Memory corruption error if fp of just created file is closed before curl_close.
--CREDITS--
Alexey Shein <confik@gmail.com>
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
-$ch = curl_init(getenv('PHP_CURL_HTTP_REMOTE_SERVER'));
+include 'server.inc';
+$host = curl_cli_server_start();
+$ch = curl_init($host);
$temp_file = dirname(__FILE__) . '/curl_file_deleted_before_curl_close.tmp';
if (file_exists($temp_file)) {
diff --git a/ext/curl/tests/curl_file_upload.phpt b/ext/curl/tests/curl_file_upload.phpt
index d3168e578..3a5a78fde 100644
--- a/ext/curl/tests/curl_file_upload.phpt
+++ b/ext/curl/tests/curl_file_upload.phpt
@@ -1,14 +1,8 @@
--TEST--
CURL file uploading
+--INI--
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) {
- exit("skip curl extension not loaded");
-}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
@@ -25,7 +19,8 @@ function testcurl($ch, $name, $mime = '', $postname = '')
var_dump(curl_exec($ch));
}
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "{$host}/get.php?test=file");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@@ -48,6 +43,7 @@ var_dump($file->getPostFilename());
curl_setopt($ch, CURLOPT_POSTFIELDS, array("file" => $file));
var_dump(curl_exec($ch));
+curl_setopt($ch, CURLOPT_SAFE_UPLOAD, 0);
$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
var_dump(curl_exec($ch));
diff --git a/ext/curl/tests/curl_multi_getcontent_basic3.phpt b/ext/curl/tests/curl_multi_getcontent_basic3.phpt
index ac2a37172..190fe9d9c 100644
--- a/ext/curl/tests/curl_multi_getcontent_basic3.phpt
+++ b/ext/curl/tests/curl_multi_getcontent_basic3.phpt
@@ -4,12 +4,7 @@ Curl_multi_getcontent() basic test with different sources (local file/http)
Rein Velt (rein@velt.org)
#TestFest Utrecht 20090509
--SKIPIF--
-<?php
-if (!extension_loaded('curl')) print 'skip need ext/curl';
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
//CURL_MULTI_GETCONTENT TEST
@@ -19,7 +14,8 @@ if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
$ch2=curl_init();
//SET URL AND OTHER OPTIONS
- $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ include 'server.inc';
+ $host = curl_cli_server_start();
curl_setopt($ch1, CURLOPT_URL, "{$host}/get.php?test=getpost&get_param=Hello%20World");
curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata2.txt");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
diff --git a/ext/curl/tests/curl_setopt_array_basic.phpt b/ext/curl/tests/curl_setopt_array_basic.phpt
index 427de7fc7..d858241b7 100644
--- a/ext/curl/tests/curl_setopt_array_basic.phpt
+++ b/ext/curl/tests/curl_setopt_array_basic.phpt
@@ -4,7 +4,7 @@ curl_setopt_array() function - tests setting multiple cURL options with curl_set
Mattijs Hoitink mattijshoitink@gmail.com
#Testfest Utrecht 2009
--SKIPIF--
-<?php if (!extension_loaded("curl")) print "skip"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
/*
@@ -15,7 +15,8 @@ Mattijs Hoitink mattijshoitink@gmail.com
*/
// Figure out what handler to use
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
if (!empty($host)) {
// Use the set Environment variable
$url = "{$host}/get.php?test=get";
diff --git a/ext/curl/tests/curl_setopt_basic002.phpt b/ext/curl/tests/curl_setopt_basic002.phpt
index 074158a4b..7a11493ed 100644
--- a/ext/curl/tests/curl_setopt_basic002.phpt
+++ b/ext/curl/tests/curl_setopt_basic002.phpt
@@ -4,11 +4,12 @@ curl_setopt basic tests with CURLOPT_STDERR.
Paul Sohier
#phptestfest utrecht
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
// start testing
echo "*** Testing curl_setopt with CURLOPT_STDERR\n";
diff --git a/ext/curl/tests/curl_setopt_basic003.phpt b/ext/curl/tests/curl_setopt_basic003.phpt
index aa225c6e3..246b83b41 100644
--- a/ext/curl/tests/curl_setopt_basic003.phpt
+++ b/ext/curl/tests/curl_setopt_basic003.phpt
@@ -4,11 +4,12 @@ curl_setopt() call with CURLOPT_HTTPHEADER
Paul Sohier
#phptestfest utrecht
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
// start testing
echo "*** curl_setopt() call with CURLOPT_HTTPHEADER\n";
diff --git a/ext/curl/tests/curl_setopt_basic004.phpt b/ext/curl/tests/curl_setopt_basic004.phpt
index 97b4115e3..ee0b4921d 100644
--- a/ext/curl/tests/curl_setopt_basic004.phpt
+++ b/ext/curl/tests/curl_setopt_basic004.phpt
@@ -4,11 +4,12 @@ curl_setopt() call with CURLOPT_RETURNTRANSFER
Paul Sohier
#phptestfest utrecht
--SKIPIF--
-<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
// start testing
echo "*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 1\n";
diff --git a/ext/curl/tests/curl_version_error.phpt b/ext/curl/tests/curl_version_error.phpt
index fb4793af1..a9b80c55b 100644
--- a/ext/curl/tests/curl_version_error.phpt
+++ b/ext/curl/tests/curl_version_error.phpt
@@ -1,14 +1,7 @@
--TEST--
Test curl_version() function : error conditions
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) {
- die('skip - curl extension not available in this build');
-}
-if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable";
-}
-?>
+<?php if (!extension_loaded("curl")) exit("skip curl extension not loaded"); ?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_version_variation1.phpt b/ext/curl/tests/curl_version_variation1.phpt
index cd912c480..927b4ac31 100644
--- a/ext/curl/tests/curl_version_variation1.phpt
+++ b/ext/curl/tests/curl_version_variation1.phpt
@@ -1,14 +1,7 @@
--TEST--
Test curl_version() function : usage variations - test values for $ascii argument
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) {
- echo "skip - curl extension not available in this build";
-}
-if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable";
-}
-?>
+<?php if (!extension_loaded("curl")) exit("skip curl extension not loaded"); ?>
--FILE--
<?php
diff --git a/ext/curl/tests/curl_writeheader_callback.phpt b/ext/curl/tests/curl_writeheader_callback.phpt
index fa27363a4..46e0cc18b 100644
--- a/ext/curl/tests/curl_writeheader_callback.phpt
+++ b/ext/curl/tests/curl_writeheader_callback.phpt
@@ -4,16 +4,9 @@ Test curl option CURLOPT_HEADERFUNCTION
Mathieu Kooiman <mathieuk@gmail.com>
Dutch UG, TestFest 2009, Utrecht
--DESCRIPTION--
-Hit the host identified by PHP_CURL_HTTP_REMOTE_SERVER and determine that the headers are sent to the callback specified for CURLOPT_HEADERFUNCTION. Different test servers specified for PHP_CURL_HTTP_REMOTE_SERVER might return different sets of headers. Just test for HTTP/1.1 200 OK.
+Hit the host and determine that the headers are sent to the callback specified for CURLOPT_HEADERFUNCTION. Different test servers might return different sets of headers. Just test for HTTP/1.1 200 OK.
--SKIPIF--
-<?php
-if (!extension_loaded("curl")) {
- echo "skip - curl extension not available in this build";
-}
-if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable";
-}
-?>
+<?php include 'skipif.inc'; ?>
--FILE--
<?php
@@ -23,7 +16,8 @@ function curl_header_callback($curl_handle, $data)
echo $data;
}
-$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+include 'server.inc';
+$host = curl_cli_server_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
diff --git a/ext/curl/tests/server.inc b/ext/curl/tests/server.inc
new file mode 100644
index 000000000..6d96a9850
--- /dev/null
+++ b/ext/curl/tests/server.inc
@@ -0,0 +1,56 @@
+<?php
+
+define ("PHP_CURL_SERVER_HOSTNAME", "localhost");
+define ("PHP_CURL_SERVER_PORT", 8964);
+define ("PHP_CURL_SERVER_ADDRESS", PHP_CURL_SERVER_HOSTNAME.":".PHP_CURL_SERVER_PORT);
+
+function curl_cli_server_start() {
+ if(getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ return getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+ }
+
+ $php_executable = getenv('TEST_PHP_EXECUTABLE');
+ $doc_root = __DIR__;
+ $router = "responder/get.php";
+
+ $descriptorspec = array(
+ 0 => STDIN,
+ 1 => STDOUT,
+ 2 => STDERR,
+ );
+
+ if (substr(PHP_OS, 0, 3) == 'WIN') {
+ $cmd = "{$php_executable} -t {$doc_root} -n -S " . PHP_CURL_SERVER_ADDRESS;
+ $cmd .= " {$router}";
+ $handle = proc_open(addslashes($cmd), $descriptorspec, $pipes, $doc_root, NULL, array("bypass_shell" => true, "suppress_errors" => true));
+ } else {
+ $cmd = "exec {$php_executable} -t {$doc_root} -n -S " . PHP_CURL_SERVER_ADDRESS;
+ $cmd .= " {$router}";
+ $cmd .= " 2>/dev/null";
+
+ $handle = proc_open($cmd, $descriptorspec, $pipes, $doc_root);
+ }
+
+ // note: even when server prints 'Listening on localhost:8964...Press Ctrl-C to quit.'
+ // it might not be listening yet...need to wait until fsockopen() call returns
+ $i = 0;
+ while (($i++ < 30) && !($fp = @fsockopen(PHP_CURL_SERVER_HOSTNAME, PHP_CURL_SERVER_PORT))) {
+ usleep(10000);
+ }
+
+ if ($fp) {
+ fclose($fp);
+ }
+
+ register_shutdown_function(
+ function($handle) use($router) {
+ proc_terminate($handle);
+ },
+ $handle
+ );
+ // don't bother sleeping, server is already up
+ // server can take a variable amount of time to be up, so just sleeping a guessed amount of time
+ // does not work. this is why tests sometimes pass and sometimes fail. to get a reliable pass
+ // sleeping doesn't work.
+ return PHP_CURL_SERVER_ADDRESS;
+}
diff --git a/ext/curl/tests/skipif.inc b/ext/curl/tests/skipif.inc
new file mode 100644
index 000000000..62b252bcd
--- /dev/null
+++ b/ext/curl/tests/skipif.inc
@@ -0,0 +1,7 @@
+<?php
+ if (!extension_loaded("curl")) exit("skip curl extension not loaded");
+ if(false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ if (php_sapi_name() != "cli") {
+ die("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
+ }
+ }
diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
index 8fd3a198b..dffa9770c 100644
--- a/ext/date/lib/parse_date.c
+++ b/ext/date/lib/parse_date.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Thu Feb 6 07:35:53 2014 */
+/* Generated by re2c 0.13.5 on Tue May 13 17:01:57 2014 */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
@@ -400,9 +400,12 @@ static timelib_sll timelib_meridian_with_check(char **ptr, timelib_sll h)
{
timelib_sll retval = 0;
- while (!strchr("AaPp", **ptr)) {
+ while (**ptr && !strchr("AaPp", **ptr)) {
++*ptr;
}
+ if(!**ptr) {
+ return TIMELIB_UNSET;
+ }
if (**ptr == 'a' || **ptr == 'A') {
if (h == 12) {
retval = -12;
@@ -24992,7 +24995,11 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
break;
case '\\': /* escaped char */
- ++fptr;
+ if(!fptr[1]) {
+ add_pbf_error(s, "Escaped character expected", string, begin);
+ break;
+ }
+ fptr++;
if (*ptr == *fptr) {
++ptr;
} else {
diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
index e01e292e1..bbae79441 100644
--- a/ext/date/lib/parse_date.re
+++ b/ext/date/lib/parse_date.re
@@ -399,9 +399,12 @@ static timelib_sll timelib_meridian_with_check(char **ptr, timelib_sll h)
{
timelib_sll retval = 0;
- while (!strchr("AaPp", **ptr)) {
+ while (**ptr && !strchr("AaPp", **ptr)) {
++*ptr;
}
+ if(!**ptr) {
+ return TIMELIB_UNSET;
+ }
if (**ptr == 'a' || **ptr == 'A') {
if (h == 12) {
retval = -12;
@@ -2097,7 +2100,11 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
break;
case '\\': /* escaped char */
- ++fptr;
+ if(!fptr[1]) {
+ add_pbf_error(s, "Escaped character expected", string, begin);
+ break;
+ }
+ fptr++;
if (*ptr == *fptr) {
++ptr;
} else {
diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index d2292d63b..da6749c51 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -13,575 +13,575 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[580] = {
{ "Africa/Brazzaville" , 0x00051C },
{ "Africa/Bujumbura" , 0x000571 },
{ "Africa/Cairo" , 0x0005B5 },
- { "Africa/Casablanca" , 0x000878 },
- { "Africa/Ceuta" , 0x000ADA },
- { "Africa/Conakry" , 0x000DE1 },
- { "Africa/Dakar" , 0x000E4C },
- { "Africa/Dar_es_Salaam" , 0x000EB2 },
- { "Africa/Djibouti" , 0x000F1F },
- { "Africa/Douala" , 0x000F74 },
- { "Africa/El_Aaiun" , 0x000FC9 },
- { "Africa/Freetown" , 0x0011F4 },
- { "Africa/Gaborone" , 0x001303 },
- { "Africa/Harare" , 0x001370 },
- { "Africa/Johannesburg" , 0x0013C5 },
- { "Africa/Juba" , 0x001433 },
- { "Africa/Kampala" , 0x001546 },
- { "Africa/Khartoum" , 0x0015C5 },
- { "Africa/Kigali" , 0x0016D8 },
- { "Africa/Kinshasa" , 0x00172D },
- { "Africa/Lagos" , 0x001788 },
- { "Africa/Libreville" , 0x0017DD },
- { "Africa/Lome" , 0x001832 },
- { "Africa/Luanda" , 0x001876 },
- { "Africa/Lubumbashi" , 0x0018CB },
- { "Africa/Lusaka" , 0x001926 },
- { "Africa/Malabo" , 0x00197B },
- { "Africa/Maputo" , 0x0019E1 },
- { "Africa/Maseru" , 0x001A36 },
- { "Africa/Mbabane" , 0x001A9E },
- { "Africa/Mogadishu" , 0x001AF4 },
- { "Africa/Monrovia" , 0x001B4F },
- { "Africa/Nairobi" , 0x001BB5 },
- { "Africa/Ndjamena" , 0x001C34 },
- { "Africa/Niamey" , 0x001CA0 },
- { "Africa/Nouakchott" , 0x001D13 },
- { "Africa/Ouagadougou" , 0x001D7E },
- { "Africa/Porto-Novo" , 0x001DD3 },
- { "Africa/Sao_Tome" , 0x001E39 },
- { "Africa/Timbuktu" , 0x001E8E },
- { "Africa/Tripoli" , 0x001EF9 },
- { "Africa/Tunis" , 0x002002 },
- { "Africa/Windhoek" , 0x002114 },
- { "America/Adak" , 0x00235B },
- { "America/Anchorage" , 0x0026D1 },
- { "America/Anguilla" , 0x002A45 },
- { "America/Antigua" , 0x002A9A },
- { "America/Araguaina" , 0x002B00 },
- { "America/Argentina/Buenos_Aires" , 0x002C65 },
- { "America/Argentina/Catamarca" , 0x002E13 },
- { "America/Argentina/ComodRivadavia" , 0x002FD4 },
- { "America/Argentina/Cordoba" , 0x00317A },
- { "America/Argentina/Jujuy" , 0x00334F },
- { "America/Argentina/La_Rioja" , 0x003503 },
- { "America/Argentina/Mendoza" , 0x0036BB },
- { "America/Argentina/Rio_Gallegos" , 0x00387B },
- { "America/Argentina/Salta" , 0x003A30 },
- { "America/Argentina/San_Juan" , 0x003BDC },
- { "America/Argentina/San_Luis" , 0x003D94 },
- { "America/Argentina/Tucuman" , 0x003F5A },
- { "America/Argentina/Ushuaia" , 0x004116 },
- { "America/Aruba" , 0x0042D1 },
- { "America/Asuncion" , 0x004337 },
- { "America/Atikokan" , 0x00461C },
- { "America/Atka" , 0x0046F2 },
- { "America/Bahia" , 0x004A58 },
- { "America/Bahia_Banderas" , 0x004BEB },
- { "America/Barbados" , 0x004E64 },
- { "America/Belem" , 0x004EFE },
- { "America/Belize" , 0x004FF9 },
- { "America/Blanc-Sablon" , 0x005175 },
- { "America/Boa_Vista" , 0x005229 },
- { "America/Bogota" , 0x005332 },
- { "America/Boise" , 0x00539E },
- { "America/Buenos_Aires" , 0x005735 },
- { "America/Cambridge_Bay" , 0x0058CE },
- { "America/Campo_Grande" , 0x005BF6 },
- { "America/Cancun" , 0x005EE5 },
- { "America/Caracas" , 0x006127 },
- { "America/Catamarca" , 0x00618E },
- { "America/Cayenne" , 0x006334 },
- { "America/Cayman" , 0x006396 },
- { "America/Chicago" , 0x0063EB },
- { "America/Chihuahua" , 0x006902 },
- { "America/Coral_Harbour" , 0x006B6D },
- { "America/Cordoba" , 0x006BFF },
- { "America/Costa_Rica" , 0x006DA5 },
- { "America/Creston" , 0x006E2F },
- { "America/Cuiaba" , 0x006EBB },
- { "America/Curacao" , 0x007199 },
- { "America/Danmarkshavn" , 0x0071FF },
- { "America/Dawson" , 0x007343 },
- { "America/Dawson_Creek" , 0x007660 },
- { "America/Denver" , 0x00783A },
- { "America/Detroit" , 0x007BC0 },
- { "America/Dominica" , 0x007F1F },
- { "America/Edmonton" , 0x007F74 },
- { "America/Eirunepe" , 0x00832C },
- { "America/El_Salvador" , 0x008444 },
- { "America/Ensenada" , 0x0084B9 },
- { "America/Fort_Wayne" , 0x008960 },
- { "America/Fortaleza" , 0x008822 },
- { "America/Glace_Bay" , 0x008BCA },
- { "America/Godthab" , 0x008F41 },
- { "America/Goose_Bay" , 0x009205 },
- { "America/Grand_Turk" , 0x0096C2 },
- { "America/Grenada" , 0x009971 },
- { "America/Guadeloupe" , 0x0099C6 },
- { "America/Guatemala" , 0x009A1B },
- { "America/Guayaquil" , 0x009AA4 },
- { "America/Guyana" , 0x009B01 },
- { "America/Halifax" , 0x009B82 },
- { "America/Havana" , 0x00A098 },
- { "America/Hermosillo" , 0x00A40B },
- { "America/Indiana/Indianapolis" , 0x00A4E9 },
- { "America/Indiana/Knox" , 0x00A77A },
- { "America/Indiana/Marengo" , 0x00AB11 },
- { "America/Indiana/Petersburg" , 0x00ADB7 },
- { "America/Indiana/Tell_City" , 0x00B304 },
- { "America/Indiana/Vevay" , 0x00B59D },
- { "America/Indiana/Vincennes" , 0x00B7D8 },
- { "America/Indiana/Winamac" , 0x00BA8C },
- { "America/Indianapolis" , 0x00B09A },
- { "America/Inuvik" , 0x00BD45 },
- { "America/Iqaluit" , 0x00C03C },
- { "America/Jamaica" , 0x00C35E },
- { "America/Jujuy" , 0x00C423 },
- { "America/Juneau" , 0x00C5CD },
- { "America/Kentucky/Louisville" , 0x00C94B },
- { "America/Kentucky/Monticello" , 0x00CD69 },
- { "America/Knox_IN" , 0x00D0EE },
- { "America/Kralendijk" , 0x00D45F },
- { "America/La_Paz" , 0x00D4C5 },
- { "America/Lima" , 0x00D52C },
- { "America/Los_Angeles" , 0x00D5D4 },
- { "America/Louisville" , 0x00D9E5 },
- { "America/Lower_Princes" , 0x00DDDA },
- { "America/Maceio" , 0x00DE40 },
- { "America/Managua" , 0x00DF7A },
- { "America/Manaus" , 0x00E02D },
- { "America/Marigot" , 0x00E12F },
- { "America/Martinique" , 0x00E184 },
- { "America/Matamoros" , 0x00E1F0 },
- { "America/Mazatlan" , 0x00E449 },
- { "America/Mendoza" , 0x00E6B6 },
- { "America/Menominee" , 0x00E86A },
- { "America/Merida" , 0x00EBEB },
- { "America/Metlakatla" , 0x00EE26 },
- { "America/Mexico_City" , 0x00EF60 },
- { "America/Miquelon" , 0x00F1DB },
- { "America/Moncton" , 0x00F44D },
- { "America/Monterrey" , 0x00F8E4 },
- { "America/Montevideo" , 0x00FB47 },
- { "America/Montreal" , 0x00FE59 },
- { "America/Montserrat" , 0x010349 },
- { "America/Nassau" , 0x01039E },
- { "America/New_York" , 0x0106E3 },
- { "America/Nipigon" , 0x010BEE },
- { "America/Nome" , 0x010F3F },
- { "America/Noronha" , 0x0112BD },
- { "America/North_Dakota/Beulah" , 0x0113ED },
- { "America/North_Dakota/Center" , 0x011781 },
- { "America/North_Dakota/New_Salem" , 0x011B15 },
- { "America/Ojinaga" , 0x011EBE },
- { "America/Panama" , 0x01211F },
- { "America/Pangnirtung" , 0x012174 },
- { "America/Paramaribo" , 0x0124AA },
- { "America/Phoenix" , 0x01253C },
- { "America/Port-au-Prince" , 0x0125FA },
- { "America/Port_of_Spain" , 0x01291E },
- { "America/Porto_Acre" , 0x01281A },
- { "America/Porto_Velho" , 0x012973 },
- { "America/Puerto_Rico" , 0x012A69 },
- { "America/Rainy_River" , 0x012AD4 },
- { "America/Rankin_Inlet" , 0x012E0C },
- { "America/Recife" , 0x0130F2 },
- { "America/Regina" , 0x01321C },
- { "America/Resolute" , 0x0133DA },
- { "America/Rio_Branco" , 0x0136CB },
- { "America/Rosario" , 0x0137D3 },
- { "America/Santa_Isabel" , 0x013979 },
- { "America/Santarem" , 0x013D1C },
- { "America/Santiago" , 0x013E21 },
- { "America/Santo_Domingo" , 0x0141CA },
- { "America/Sao_Paulo" , 0x014290 },
- { "America/Scoresbysund" , 0x01459F },
- { "America/Shiprock" , 0x01488D },
- { "America/Sitka" , 0x014C06 },
- { "America/St_Barthelemy" , 0x014F8E },
- { "America/St_Johns" , 0x014FE3 },
- { "America/St_Kitts" , 0x015536 },
- { "America/St_Lucia" , 0x01558B },
- { "America/St_Thomas" , 0x0155E0 },
- { "America/St_Vincent" , 0x015635 },
- { "America/Swift_Current" , 0x01568A },
- { "America/Tegucigalpa" , 0x0157AB },
- { "America/Thule" , 0x01582A },
- { "America/Thunder_Bay" , 0x015A71 },
- { "America/Tijuana" , 0x015DBA },
- { "America/Toronto" , 0x016153 },
- { "America/Tortola" , 0x016673 },
- { "America/Vancouver" , 0x0166C8 },
- { "America/Virgin" , 0x016B05 },
- { "America/Whitehorse" , 0x016B5A },
- { "America/Winnipeg" , 0x016E77 },
- { "America/Yakutat" , 0x0172B7 },
- { "America/Yellowknife" , 0x017622 },
- { "Antarctica/Casey" , 0x017932 },
- { "Antarctica/Davis" , 0x0179CF },
- { "Antarctica/DumontDUrville" , 0x017A70 },
- { "Antarctica/Macquarie" , 0x017B02 },
- { "Antarctica/Mawson" , 0x017D49 },
- { "Antarctica/McMurdo" , 0x017DC5 },
- { "Antarctica/Palmer" , 0x018170 },
- { "Antarctica/Rothera" , 0x01848C },
- { "Antarctica/South_Pole" , 0x018502 },
- { "Antarctica/Syowa" , 0x018880 },
- { "Antarctica/Troll" , 0x0188EE },
- { "Antarctica/Vostok" , 0x018AC0 },
- { "Arctic/Longyearbyen" , 0x018B31 },
- { "Asia/Aden" , 0x018E63 },
- { "Asia/Almaty" , 0x018EB8 },
- { "Asia/Amman" , 0x019037 },
- { "Asia/Anadyr" , 0x0192ED },
- { "Asia/Aqtau" , 0x0194D2 },
- { "Asia/Aqtobe" , 0x0196D1 },
- { "Asia/Ashgabat" , 0x019889 },
- { "Asia/Ashkhabad" , 0x0199A6 },
- { "Asia/Baghdad" , 0x019AC3 },
- { "Asia/Bahrain" , 0x019C38 },
- { "Asia/Baku" , 0x019C9E },
- { "Asia/Bangkok" , 0x019F86 },
- { "Asia/Beirut" , 0x019FDB },
- { "Asia/Bishkek" , 0x01A2E8 },
- { "Asia/Brunei" , 0x01A494 },
- { "Asia/Calcutta" , 0x01A4F6 },
- { "Asia/Choibalsan" , 0x01A56F },
- { "Asia/Chongqing" , 0x01A6E8 },
- { "Asia/Chungking" , 0x01A7D7 },
- { "Asia/Colombo" , 0x01A886 },
- { "Asia/Dacca" , 0x01A922 },
- { "Asia/Damascus" , 0x01A9C8 },
- { "Asia/Dhaka" , 0x01AD18 },
- { "Asia/Dili" , 0x01ADBE },
- { "Asia/Dubai" , 0x01AE48 },
- { "Asia/Dushanbe" , 0x01AE9D },
- { "Asia/Gaza" , 0x01AFA0 },
- { "Asia/Harbin" , 0x01B2F3 },
- { "Asia/Hebron" , 0x01B3DA },
- { "Asia/Ho_Chi_Minh" , 0x01B736 },
- { "Asia/Hong_Kong" , 0x01B7AE },
- { "Asia/Hovd" , 0x01B970 },
- { "Asia/Irkutsk" , 0x01BAE8 },
- { "Asia/Istanbul" , 0x01BCCE },
- { "Asia/Jakarta" , 0x01C0BB },
- { "Asia/Jayapura" , 0x01C165 },
- { "Asia/Jerusalem" , 0x01C201 },
- { "Asia/Kabul" , 0x01C530 },
- { "Asia/Kamchatka" , 0x01C581 },
- { "Asia/Karachi" , 0x01C75D },
- { "Asia/Kashgar" , 0x01C812 },
- { "Asia/Kathmandu" , 0x01C8E3 },
- { "Asia/Katmandu" , 0x01C949 },
- { "Asia/Khandyga" , 0x01C9AF },
- { "Asia/Kolkata" , 0x01CBD4 },
- { "Asia/Krasnoyarsk" , 0x01CC4D },
- { "Asia/Kuala_Lumpur" , 0x01CE35 },
- { "Asia/Kuching" , 0x01CEF2 },
- { "Asia/Kuwait" , 0x01CFE0 },
- { "Asia/Macao" , 0x01D035 },
- { "Asia/Macau" , 0x01D170 },
- { "Asia/Magadan" , 0x01D2AB },
- { "Asia/Makassar" , 0x01D48D },
- { "Asia/Manila" , 0x01D552 },
- { "Asia/Muscat" , 0x01D5D7 },
- { "Asia/Nicosia" , 0x01D62C },
- { "Asia/Novokuznetsk" , 0x01D914 },
- { "Asia/Novosibirsk" , 0x01DB16 },
- { "Asia/Omsk" , 0x01DD01 },
- { "Asia/Oral" , 0x01DEE8 },
- { "Asia/Phnom_Penh" , 0x01E0B8 },
- { "Asia/Pontianak" , 0x01E130 },
- { "Asia/Pyongyang" , 0x01E1F2 },
- { "Asia/Qatar" , 0x01E25F },
- { "Asia/Qyzylorda" , 0x01E2C5 },
- { "Asia/Rangoon" , 0x01E49B },
- { "Asia/Riyadh" , 0x01E513 },
- { "Asia/Saigon" , 0x01E568 },
- { "Asia/Sakhalin" , 0x01E5E0 },
- { "Asia/Samarkand" , 0x01E7D7 },
- { "Asia/Seoul" , 0x01E90D },
- { "Asia/Shanghai" , 0x01E9B1 },
- { "Asia/Singapore" , 0x01EA91 },
- { "Asia/Taipei" , 0x01EB48 },
- { "Asia/Tashkent" , 0x01EC60 },
- { "Asia/Tbilisi" , 0x01ED91 },
- { "Asia/Tehran" , 0x01EF4B },
- { "Asia/Tel_Aviv" , 0x01F1B9 },
- { "Asia/Thimbu" , 0x01F4E8 },
- { "Asia/Thimphu" , 0x01F54E },
- { "Asia/Tokyo" , 0x01F5B4 },
- { "Asia/Ujung_Pandang" , 0x01F63D },
- { "Asia/Ulaanbaatar" , 0x01F6BA },
- { "Asia/Ulan_Bator" , 0x01F815 },
- { "Asia/Urumqi" , 0x01F962 },
- { "Asia/Ust-Nera" , 0x01FA29 },
- { "Asia/Vientiane" , 0x01FC2E },
- { "Asia/Vladivostok" , 0x01FCA6 },
- { "Asia/Yakutsk" , 0x01FE92 },
- { "Asia/Yekaterinburg" , 0x020077 },
- { "Asia/Yerevan" , 0x020282 },
- { "Atlantic/Azores" , 0x020482 },
- { "Atlantic/Bermuda" , 0x020985 },
- { "Atlantic/Canary" , 0x020C66 },
- { "Atlantic/Cape_Verde" , 0x020F3C },
- { "Atlantic/Faeroe" , 0x020FB5 },
- { "Atlantic/Faroe" , 0x021259 },
- { "Atlantic/Jan_Mayen" , 0x0214FD },
- { "Atlantic/Madeira" , 0x02182F },
- { "Atlantic/Reykjavik" , 0x021D38 },
- { "Atlantic/South_Georgia" , 0x021EF1 },
- { "Atlantic/St_Helena" , 0x022103 },
- { "Atlantic/Stanley" , 0x021F35 },
- { "Australia/ACT" , 0x022158 },
- { "Australia/Adelaide" , 0x022475 },
- { "Australia/Brisbane" , 0x0227A1 },
- { "Australia/Broken_Hill" , 0x022868 },
- { "Australia/Canberra" , 0x022BA6 },
- { "Australia/Currie" , 0x022EC3 },
- { "Australia/Darwin" , 0x0231F6 },
- { "Australia/Eucla" , 0x02327C },
- { "Australia/Hobart" , 0x023351 },
- { "Australia/LHI" , 0x0236AF },
- { "Australia/Lindeman" , 0x02394A },
- { "Australia/Lord_Howe" , 0x023A2B },
- { "Australia/Melbourne" , 0x023CD6 },
- { "Australia/North" , 0x023FFB },
- { "Australia/NSW" , 0x02406F },
- { "Australia/Perth" , 0x02438C },
- { "Australia/Queensland" , 0x024464 },
- { "Australia/South" , 0x024510 },
- { "Australia/Sydney" , 0x02482D },
- { "Australia/Tasmania" , 0x024B6A },
- { "Australia/Victoria" , 0x024EAF },
- { "Australia/West" , 0x0251CC },
- { "Australia/Yancowinna" , 0x025282 },
- { "Brazil/Acre" , 0x0255A4 },
- { "Brazil/DeNoronha" , 0x0256A8 },
- { "Brazil/East" , 0x0257C8 },
- { "Brazil/West" , 0x025AA5 },
- { "Canada/Atlantic" , 0x025B9D },
- { "Canada/Central" , 0x026085 },
- { "Canada/East-Saskatchewan" , 0x02698F },
- { "Canada/Eastern" , 0x02649F },
- { "Canada/Mountain" , 0x026B18 },
- { "Canada/Newfoundland" , 0x026E8E },
- { "Canada/Pacific" , 0x0273B9 },
- { "Canada/Saskatchewan" , 0x0277D2 },
- { "Canada/Yukon" , 0x02795B },
- { "CET" , 0x027C5E },
- { "Chile/Continental" , 0x027F67 },
- { "Chile/EasterIsland" , 0x028302 },
- { "CST6CDT" , 0x028644 },
- { "Cuba" , 0x028995 },
- { "EET" , 0x028D08 },
- { "Egypt" , 0x028FBB },
- { "Eire" , 0x02927E },
- { "EST" , 0x02978F },
- { "EST5EDT" , 0x0297D3 },
- { "Etc/GMT" , 0x029B24 },
- { "Etc/GMT+0" , 0x029BF0 },
- { "Etc/GMT+1" , 0x029C7A },
- { "Etc/GMT+10" , 0x029D07 },
- { "Etc/GMT+11" , 0x029D95 },
- { "Etc/GMT+12" , 0x029E23 },
- { "Etc/GMT+2" , 0x029F3E },
- { "Etc/GMT+3" , 0x029FCA },
- { "Etc/GMT+4" , 0x02A056 },
- { "Etc/GMT+5" , 0x02A0E2 },
- { "Etc/GMT+6" , 0x02A16E },
- { "Etc/GMT+7" , 0x02A1FA },
- { "Etc/GMT+8" , 0x02A286 },
- { "Etc/GMT+9" , 0x02A312 },
- { "Etc/GMT-0" , 0x029BAC },
- { "Etc/GMT-1" , 0x029C34 },
- { "Etc/GMT-10" , 0x029CC0 },
- { "Etc/GMT-11" , 0x029D4E },
- { "Etc/GMT-12" , 0x029DDC },
- { "Etc/GMT-13" , 0x029E6A },
- { "Etc/GMT-14" , 0x029EB1 },
- { "Etc/GMT-2" , 0x029EF8 },
- { "Etc/GMT-3" , 0x029F84 },
- { "Etc/GMT-4" , 0x02A010 },
- { "Etc/GMT-5" , 0x02A09C },
- { "Etc/GMT-6" , 0x02A128 },
- { "Etc/GMT-7" , 0x02A1B4 },
- { "Etc/GMT-8" , 0x02A240 },
- { "Etc/GMT-9" , 0x02A2CC },
- { "Etc/GMT0" , 0x029B68 },
- { "Etc/Greenwich" , 0x02A358 },
- { "Etc/UCT" , 0x02A39C },
- { "Etc/Universal" , 0x02A3E0 },
- { "Etc/UTC" , 0x02A424 },
- { "Etc/Zulu" , 0x02A468 },
- { "Europe/Amsterdam" , 0x02A4AC },
- { "Europe/Andorra" , 0x02A8EA },
- { "Europe/Athens" , 0x02AB66 },
- { "Europe/Belfast" , 0x02AEA9 },
- { "Europe/Belgrade" , 0x02B3E0 },
- { "Europe/Berlin" , 0x02B6A9 },
- { "Europe/Bratislava" , 0x02BA0D },
- { "Europe/Brussels" , 0x02BD3F },
- { "Europe/Bucharest" , 0x02C176 },
- { "Europe/Budapest" , 0x02C4A0 },
- { "Europe/Busingen" , 0x02C813 },
- { "Europe/Chisinau" , 0x02CACA },
- { "Europe/Copenhagen" , 0x02CE58 },
- { "Europe/Dublin" , 0x02D162 },
- { "Europe/Gibraltar" , 0x02D673 },
- { "Europe/Guernsey" , 0x02DACA },
- { "Europe/Helsinki" , 0x02E001 },
- { "Europe/Isle_of_Man" , 0x02E2B7 },
- { "Europe/Istanbul" , 0x02E7EE },
- { "Europe/Jersey" , 0x02EBDB },
- { "Europe/Kaliningrad" , 0x02F112 },
- { "Europe/Kiev" , 0x02F378 },
- { "Europe/Lisbon" , 0x02F694 },
- { "Europe/Ljubljana" , 0x02FB98 },
- { "Europe/London" , 0x02FE61 },
- { "Europe/Luxembourg" , 0x030398 },
- { "Europe/Madrid" , 0x0307EE },
- { "Europe/Malta" , 0x030BB4 },
- { "Europe/Mariehamn" , 0x030F6D },
- { "Europe/Minsk" , 0x031223 },
- { "Europe/Monaco" , 0x031431 },
- { "Europe/Moscow" , 0x03186C },
- { "Europe/Nicosia" , 0x031ABD },
- { "Europe/Oslo" , 0x031DA5 },
- { "Europe/Paris" , 0x0320D7 },
- { "Europe/Podgorica" , 0x03251D },
- { "Europe/Prague" , 0x0327E6 },
- { "Europe/Riga" , 0x032B18 },
- { "Europe/Rome" , 0x032E5D },
- { "Europe/Samara" , 0x033220 },
- { "Europe/San_Marino" , 0x033453 },
- { "Europe/Sarajevo" , 0x033816 },
- { "Europe/Simferopol" , 0x033ADF },
- { "Europe/Skopje" , 0x033D2B },
- { "Europe/Sofia" , 0x033FF4 },
- { "Europe/Stockholm" , 0x0342FC },
- { "Europe/Tallinn" , 0x0345AB },
- { "Europe/Tirane" , 0x0348E5 },
- { "Europe/Tiraspol" , 0x034BEB },
- { "Europe/Uzhgorod" , 0x034F79 },
- { "Europe/Vaduz" , 0x035290 },
- { "Europe/Vatican" , 0x03553F },
- { "Europe/Vienna" , 0x035902 },
- { "Europe/Vilnius" , 0x035C2F },
- { "Europe/Volgograd" , 0x035F6E },
- { "Europe/Warsaw" , 0x03616E },
- { "Europe/Zagreb" , 0x03654F },
- { "Europe/Zaporozhye" , 0x036818 },
- { "Europe/Zurich" , 0x036B59 },
- { "Factory" , 0x036E08 },
- { "GB" , 0x036E79 },
- { "GB-Eire" , 0x0373B0 },
- { "GMT" , 0x0378E7 },
- { "GMT+0" , 0x0379B3 },
- { "GMT-0" , 0x03796F },
- { "GMT0" , 0x03792B },
- { "Greenwich" , 0x0379F7 },
- { "Hongkong" , 0x037A3B },
- { "HST" , 0x037BFD },
- { "Iceland" , 0x037C41 },
- { "Indian/Antananarivo" , 0x037DFA },
- { "Indian/Chagos" , 0x037E6E },
- { "Indian/Christmas" , 0x037ED0 },
- { "Indian/Cocos" , 0x037F14 },
- { "Indian/Comoro" , 0x037F58 },
- { "Indian/Kerguelen" , 0x037FAD },
- { "Indian/Mahe" , 0x038002 },
- { "Indian/Maldives" , 0x038057 },
- { "Indian/Mauritius" , 0x0380AC },
- { "Indian/Mayotte" , 0x038122 },
- { "Indian/Reunion" , 0x038177 },
- { "Iran" , 0x0381CC },
- { "Israel" , 0x03843A },
- { "Jamaica" , 0x038769 },
- { "Japan" , 0x03882E },
- { "Kwajalein" , 0x0388B7 },
- { "Libya" , 0x03891A },
- { "MET" , 0x038A23 },
- { "Mexico/BajaNorte" , 0x038D2C },
- { "Mexico/BajaSur" , 0x039095 },
- { "Mexico/General" , 0x0392DA },
- { "MST" , 0x039538 },
- { "MST7MDT" , 0x03957C },
- { "Navajo" , 0x0398CD },
- { "NZ" , 0x039C46 },
- { "NZ-CHAT" , 0x039FC4 },
- { "Pacific/Apia" , 0x03A2AC },
- { "Pacific/Auckland" , 0x03A448 },
- { "Pacific/Chatham" , 0x03A7D4 },
- { "Pacific/Chuuk" , 0x03AACB },
- { "Pacific/Easter" , 0x03AB24 },
- { "Pacific/Efate" , 0x03AE82 },
- { "Pacific/Enderbury" , 0x03AF48 },
- { "Pacific/Fakaofo" , 0x03AFB6 },
- { "Pacific/Fiji" , 0x03B007 },
- { "Pacific/Funafuti" , 0x03B19A },
- { "Pacific/Galapagos" , 0x03B1DE },
- { "Pacific/Gambier" , 0x03B256 },
- { "Pacific/Guadalcanal" , 0x03B2BB },
- { "Pacific/Guam" , 0x03B310 },
- { "Pacific/Honolulu" , 0x03B366 },
- { "Pacific/Johnston" , 0x03B3DD },
- { "Pacific/Kiritimati" , 0x03B45C },
- { "Pacific/Kosrae" , 0x03B4C7 },
- { "Pacific/Kwajalein" , 0x03B524 },
- { "Pacific/Majuro" , 0x03B590 },
- { "Pacific/Marquesas" , 0x03B5EF },
- { "Pacific/Midway" , 0x03B656 },
- { "Pacific/Nauru" , 0x03B6E0 },
- { "Pacific/Niue" , 0x03B758 },
- { "Pacific/Norfolk" , 0x03B7B6 },
- { "Pacific/Noumea" , 0x03B80B },
- { "Pacific/Pago_Pago" , 0x03B89B },
- { "Pacific/Palau" , 0x03B924 },
- { "Pacific/Pitcairn" , 0x03B968 },
- { "Pacific/Pohnpei" , 0x03B9BD },
- { "Pacific/Ponape" , 0x03BA12 },
- { "Pacific/Port_Moresby" , 0x03BA57 },
- { "Pacific/Rarotonga" , 0x03BA9B },
- { "Pacific/Saipan" , 0x03BB77 },
- { "Pacific/Samoa" , 0x03BBDA },
- { "Pacific/Tahiti" , 0x03BC63 },
- { "Pacific/Tarawa" , 0x03BCC8 },
- { "Pacific/Tongatapu" , 0x03BD1C },
- { "Pacific/Truk" , 0x03BDA8 },
- { "Pacific/Wake" , 0x03BDED },
- { "Pacific/Wallis" , 0x03BE3D },
- { "Pacific/Yap" , 0x03BE81 },
- { "Poland" , 0x03BEC6 },
- { "Portugal" , 0x03C2A7 },
- { "PRC" , 0x03C7A3 },
- { "PST8PDT" , 0x03C854 },
- { "ROC" , 0x03CBA5 },
- { "ROK" , 0x03CCBD },
- { "Singapore" , 0x03CD61 },
- { "Turkey" , 0x03CE18 },
- { "UCT" , 0x03D205 },
- { "Universal" , 0x03D249 },
- { "US/Alaska" , 0x03D28D },
- { "US/Aleutian" , 0x03D5F6 },
- { "US/Arizona" , 0x03D95C },
- { "US/Central" , 0x03D9EA },
- { "US/East-Indiana" , 0x03E3F4 },
- { "US/Eastern" , 0x03DEF5 },
- { "US/Hawaii" , 0x03E65E },
- { "US/Indiana-Starke" , 0x03E6CF },
- { "US/Michigan" , 0x03EA40 },
- { "US/Mountain" , 0x03ED77 },
- { "US/Pacific" , 0x03F0F0 },
- { "US/Pacific-New" , 0x03F4F5 },
- { "US/Samoa" , 0x03F8FA },
- { "UTC" , 0x03F983 },
- { "W-SU" , 0x03FC7A },
- { "WET" , 0x03F9C7 },
- { "Zulu" , 0x03FEB4 },
+ { "Africa/Casablanca" , 0x0009A4 },
+ { "Africa/Ceuta" , 0x000C06 },
+ { "Africa/Conakry" , 0x000F0D },
+ { "Africa/Dakar" , 0x000F78 },
+ { "Africa/Dar_es_Salaam" , 0x000FDE },
+ { "Africa/Djibouti" , 0x00104B },
+ { "Africa/Douala" , 0x0010A0 },
+ { "Africa/El_Aaiun" , 0x0010F5 },
+ { "Africa/Freetown" , 0x001320 },
+ { "Africa/Gaborone" , 0x00142F },
+ { "Africa/Harare" , 0x00149C },
+ { "Africa/Johannesburg" , 0x0014F1 },
+ { "Africa/Juba" , 0x00155F },
+ { "Africa/Kampala" , 0x001672 },
+ { "Africa/Khartoum" , 0x0016F1 },
+ { "Africa/Kigali" , 0x001804 },
+ { "Africa/Kinshasa" , 0x001859 },
+ { "Africa/Lagos" , 0x0018B4 },
+ { "Africa/Libreville" , 0x001909 },
+ { "Africa/Lome" , 0x00195E },
+ { "Africa/Luanda" , 0x0019A2 },
+ { "Africa/Lubumbashi" , 0x0019F7 },
+ { "Africa/Lusaka" , 0x001A52 },
+ { "Africa/Malabo" , 0x001AA7 },
+ { "Africa/Maputo" , 0x001B0D },
+ { "Africa/Maseru" , 0x001B62 },
+ { "Africa/Mbabane" , 0x001BCA },
+ { "Africa/Mogadishu" , 0x001C20 },
+ { "Africa/Monrovia" , 0x001C7B },
+ { "Africa/Nairobi" , 0x001CE1 },
+ { "Africa/Ndjamena" , 0x001D60 },
+ { "Africa/Niamey" , 0x001DCC },
+ { "Africa/Nouakchott" , 0x001E3F },
+ { "Africa/Ouagadougou" , 0x001EAA },
+ { "Africa/Porto-Novo" , 0x001EFF },
+ { "Africa/Sao_Tome" , 0x001F65 },
+ { "Africa/Timbuktu" , 0x001FBA },
+ { "Africa/Tripoli" , 0x002025 },
+ { "Africa/Tunis" , 0x00212E },
+ { "Africa/Windhoek" , 0x002240 },
+ { "America/Adak" , 0x002487 },
+ { "America/Anchorage" , 0x0027FD },
+ { "America/Anguilla" , 0x002B71 },
+ { "America/Antigua" , 0x002BC6 },
+ { "America/Araguaina" , 0x002C2C },
+ { "America/Argentina/Buenos_Aires" , 0x002D91 },
+ { "America/Argentina/Catamarca" , 0x002F3F },
+ { "America/Argentina/ComodRivadavia" , 0x003100 },
+ { "America/Argentina/Cordoba" , 0x0032A6 },
+ { "America/Argentina/Jujuy" , 0x00347B },
+ { "America/Argentina/La_Rioja" , 0x00362F },
+ { "America/Argentina/Mendoza" , 0x0037E7 },
+ { "America/Argentina/Rio_Gallegos" , 0x0039A7 },
+ { "America/Argentina/Salta" , 0x003B5C },
+ { "America/Argentina/San_Juan" , 0x003D08 },
+ { "America/Argentina/San_Luis" , 0x003EC0 },
+ { "America/Argentina/Tucuman" , 0x004086 },
+ { "America/Argentina/Ushuaia" , 0x004242 },
+ { "America/Aruba" , 0x0043FD },
+ { "America/Asuncion" , 0x004463 },
+ { "America/Atikokan" , 0x004748 },
+ { "America/Atka" , 0x00481E },
+ { "America/Bahia" , 0x004B84 },
+ { "America/Bahia_Banderas" , 0x004D17 },
+ { "America/Barbados" , 0x004F90 },
+ { "America/Belem" , 0x00502A },
+ { "America/Belize" , 0x005125 },
+ { "America/Blanc-Sablon" , 0x0052A1 },
+ { "America/Boa_Vista" , 0x005355 },
+ { "America/Bogota" , 0x00545E },
+ { "America/Boise" , 0x0054CA },
+ { "America/Buenos_Aires" , 0x005861 },
+ { "America/Cambridge_Bay" , 0x0059FA },
+ { "America/Campo_Grande" , 0x005D22 },
+ { "America/Cancun" , 0x006011 },
+ { "America/Caracas" , 0x006253 },
+ { "America/Catamarca" , 0x0062BA },
+ { "America/Cayenne" , 0x006460 },
+ { "America/Cayman" , 0x0064C2 },
+ { "America/Chicago" , 0x006517 },
+ { "America/Chihuahua" , 0x006A2E },
+ { "America/Coral_Harbour" , 0x006C99 },
+ { "America/Cordoba" , 0x006D2B },
+ { "America/Costa_Rica" , 0x006ED1 },
+ { "America/Creston" , 0x006F5B },
+ { "America/Cuiaba" , 0x006FE7 },
+ { "America/Curacao" , 0x0072C5 },
+ { "America/Danmarkshavn" , 0x00732B },
+ { "America/Dawson" , 0x00746F },
+ { "America/Dawson_Creek" , 0x00778C },
+ { "America/Denver" , 0x007966 },
+ { "America/Detroit" , 0x007CEC },
+ { "America/Dominica" , 0x00804B },
+ { "America/Edmonton" , 0x0080A0 },
+ { "America/Eirunepe" , 0x008458 },
+ { "America/El_Salvador" , 0x008570 },
+ { "America/Ensenada" , 0x0085E5 },
+ { "America/Fort_Wayne" , 0x008A8C },
+ { "America/Fortaleza" , 0x00894E },
+ { "America/Glace_Bay" , 0x008CF6 },
+ { "America/Godthab" , 0x00906D },
+ { "America/Goose_Bay" , 0x009331 },
+ { "America/Grand_Turk" , 0x0097EE },
+ { "America/Grenada" , 0x009A9D },
+ { "America/Guadeloupe" , 0x009AF2 },
+ { "America/Guatemala" , 0x009B47 },
+ { "America/Guayaquil" , 0x009BD0 },
+ { "America/Guyana" , 0x009C2D },
+ { "America/Halifax" , 0x009CAE },
+ { "America/Havana" , 0x00A1C4 },
+ { "America/Hermosillo" , 0x00A537 },
+ { "America/Indiana/Indianapolis" , 0x00A615 },
+ { "America/Indiana/Knox" , 0x00A8A6 },
+ { "America/Indiana/Marengo" , 0x00AC3D },
+ { "America/Indiana/Petersburg" , 0x00AEE3 },
+ { "America/Indiana/Tell_City" , 0x00B430 },
+ { "America/Indiana/Vevay" , 0x00B6C9 },
+ { "America/Indiana/Vincennes" , 0x00B904 },
+ { "America/Indiana/Winamac" , 0x00BBB8 },
+ { "America/Indianapolis" , 0x00B1C6 },
+ { "America/Inuvik" , 0x00BE71 },
+ { "America/Iqaluit" , 0x00C168 },
+ { "America/Jamaica" , 0x00C48A },
+ { "America/Jujuy" , 0x00C54F },
+ { "America/Juneau" , 0x00C6F9 },
+ { "America/Kentucky/Louisville" , 0x00CA77 },
+ { "America/Kentucky/Monticello" , 0x00CE95 },
+ { "America/Knox_IN" , 0x00D21A },
+ { "America/Kralendijk" , 0x00D58B },
+ { "America/La_Paz" , 0x00D5F1 },
+ { "America/Lima" , 0x00D658 },
+ { "America/Los_Angeles" , 0x00D700 },
+ { "America/Louisville" , 0x00DB11 },
+ { "America/Lower_Princes" , 0x00DF06 },
+ { "America/Maceio" , 0x00DF6C },
+ { "America/Managua" , 0x00E0A6 },
+ { "America/Manaus" , 0x00E159 },
+ { "America/Marigot" , 0x00E25B },
+ { "America/Martinique" , 0x00E2B0 },
+ { "America/Matamoros" , 0x00E31C },
+ { "America/Mazatlan" , 0x00E575 },
+ { "America/Mendoza" , 0x00E7E2 },
+ { "America/Menominee" , 0x00E996 },
+ { "America/Merida" , 0x00ED17 },
+ { "America/Metlakatla" , 0x00EF52 },
+ { "America/Mexico_City" , 0x00F08C },
+ { "America/Miquelon" , 0x00F307 },
+ { "America/Moncton" , 0x00F579 },
+ { "America/Monterrey" , 0x00FA10 },
+ { "America/Montevideo" , 0x00FC73 },
+ { "America/Montreal" , 0x00FF85 },
+ { "America/Montserrat" , 0x010475 },
+ { "America/Nassau" , 0x0104CA },
+ { "America/New_York" , 0x01080F },
+ { "America/Nipigon" , 0x010D1A },
+ { "America/Nome" , 0x01106B },
+ { "America/Noronha" , 0x0113E9 },
+ { "America/North_Dakota/Beulah" , 0x011519 },
+ { "America/North_Dakota/Center" , 0x0118AD },
+ { "America/North_Dakota/New_Salem" , 0x011C41 },
+ { "America/Ojinaga" , 0x011FEA },
+ { "America/Panama" , 0x01224B },
+ { "America/Pangnirtung" , 0x0122A0 },
+ { "America/Paramaribo" , 0x0125D6 },
+ { "America/Phoenix" , 0x012668 },
+ { "America/Port-au-Prince" , 0x012726 },
+ { "America/Port_of_Spain" , 0x012A4A },
+ { "America/Porto_Acre" , 0x012946 },
+ { "America/Porto_Velho" , 0x012A9F },
+ { "America/Puerto_Rico" , 0x012B95 },
+ { "America/Rainy_River" , 0x012C00 },
+ { "America/Rankin_Inlet" , 0x012F38 },
+ { "America/Recife" , 0x01321E },
+ { "America/Regina" , 0x013348 },
+ { "America/Resolute" , 0x013506 },
+ { "America/Rio_Branco" , 0x0137F7 },
+ { "America/Rosario" , 0x0138FF },
+ { "America/Santa_Isabel" , 0x013AA5 },
+ { "America/Santarem" , 0x013E48 },
+ { "America/Santiago" , 0x013F4D },
+ { "America/Santo_Domingo" , 0x0142F6 },
+ { "America/Sao_Paulo" , 0x0143BC },
+ { "America/Scoresbysund" , 0x0146CB },
+ { "America/Shiprock" , 0x0149B9 },
+ { "America/Sitka" , 0x014D32 },
+ { "America/St_Barthelemy" , 0x0150BA },
+ { "America/St_Johns" , 0x01510F },
+ { "America/St_Kitts" , 0x015662 },
+ { "America/St_Lucia" , 0x0156B7 },
+ { "America/St_Thomas" , 0x01570C },
+ { "America/St_Vincent" , 0x015761 },
+ { "America/Swift_Current" , 0x0157B6 },
+ { "America/Tegucigalpa" , 0x0158D7 },
+ { "America/Thule" , 0x015956 },
+ { "America/Thunder_Bay" , 0x015B9D },
+ { "America/Tijuana" , 0x015EE6 },
+ { "America/Toronto" , 0x01627F },
+ { "America/Tortola" , 0x01679F },
+ { "America/Vancouver" , 0x0167F4 },
+ { "America/Virgin" , 0x016C31 },
+ { "America/Whitehorse" , 0x016C86 },
+ { "America/Winnipeg" , 0x016FA3 },
+ { "America/Yakutat" , 0x0173E3 },
+ { "America/Yellowknife" , 0x01774E },
+ { "Antarctica/Casey" , 0x017A5E },
+ { "Antarctica/Davis" , 0x017AFB },
+ { "Antarctica/DumontDUrville" , 0x017B9C },
+ { "Antarctica/Macquarie" , 0x017C2E },
+ { "Antarctica/Mawson" , 0x017E75 },
+ { "Antarctica/McMurdo" , 0x017EF1 },
+ { "Antarctica/Palmer" , 0x01829C },
+ { "Antarctica/Rothera" , 0x0185B8 },
+ { "Antarctica/South_Pole" , 0x01862E },
+ { "Antarctica/Syowa" , 0x0189AC },
+ { "Antarctica/Troll" , 0x018A1A },
+ { "Antarctica/Vostok" , 0x018BEC },
+ { "Arctic/Longyearbyen" , 0x018C5D },
+ { "Asia/Aden" , 0x018F8F },
+ { "Asia/Almaty" , 0x018FE4 },
+ { "Asia/Amman" , 0x019163 },
+ { "Asia/Anadyr" , 0x019419 },
+ { "Asia/Aqtau" , 0x0195FE },
+ { "Asia/Aqtobe" , 0x0197FD },
+ { "Asia/Ashgabat" , 0x0199B5 },
+ { "Asia/Ashkhabad" , 0x019AD2 },
+ { "Asia/Baghdad" , 0x019BEF },
+ { "Asia/Bahrain" , 0x019D64 },
+ { "Asia/Baku" , 0x019DCA },
+ { "Asia/Bangkok" , 0x01A0B2 },
+ { "Asia/Beirut" , 0x01A107 },
+ { "Asia/Bishkek" , 0x01A414 },
+ { "Asia/Brunei" , 0x01A5C0 },
+ { "Asia/Calcutta" , 0x01A622 },
+ { "Asia/Choibalsan" , 0x01A69B },
+ { "Asia/Chongqing" , 0x01A814 },
+ { "Asia/Chungking" , 0x01A903 },
+ { "Asia/Colombo" , 0x01A9B2 },
+ { "Asia/Dacca" , 0x01AA4E },
+ { "Asia/Damascus" , 0x01AAF4 },
+ { "Asia/Dhaka" , 0x01AE44 },
+ { "Asia/Dili" , 0x01AEEA },
+ { "Asia/Dubai" , 0x01AF74 },
+ { "Asia/Dushanbe" , 0x01AFC9 },
+ { "Asia/Gaza" , 0x01B0CC },
+ { "Asia/Harbin" , 0x01B41F },
+ { "Asia/Hebron" , 0x01B506 },
+ { "Asia/Ho_Chi_Minh" , 0x01B862 },
+ { "Asia/Hong_Kong" , 0x01B8DA },
+ { "Asia/Hovd" , 0x01BA9C },
+ { "Asia/Irkutsk" , 0x01BC14 },
+ { "Asia/Istanbul" , 0x01BDFA },
+ { "Asia/Jakarta" , 0x01C1E7 },
+ { "Asia/Jayapura" , 0x01C291 },
+ { "Asia/Jerusalem" , 0x01C32D },
+ { "Asia/Kabul" , 0x01C65C },
+ { "Asia/Kamchatka" , 0x01C6AD },
+ { "Asia/Karachi" , 0x01C889 },
+ { "Asia/Kashgar" , 0x01C93E },
+ { "Asia/Kathmandu" , 0x01CA0F },
+ { "Asia/Katmandu" , 0x01CA75 },
+ { "Asia/Khandyga" , 0x01CADB },
+ { "Asia/Kolkata" , 0x01CD00 },
+ { "Asia/Krasnoyarsk" , 0x01CD79 },
+ { "Asia/Kuala_Lumpur" , 0x01CF61 },
+ { "Asia/Kuching" , 0x01D01E },
+ { "Asia/Kuwait" , 0x01D10C },
+ { "Asia/Macao" , 0x01D161 },
+ { "Asia/Macau" , 0x01D29C },
+ { "Asia/Magadan" , 0x01D3D7 },
+ { "Asia/Makassar" , 0x01D5B9 },
+ { "Asia/Manila" , 0x01D67E },
+ { "Asia/Muscat" , 0x01D703 },
+ { "Asia/Nicosia" , 0x01D758 },
+ { "Asia/Novokuznetsk" , 0x01DA40 },
+ { "Asia/Novosibirsk" , 0x01DC42 },
+ { "Asia/Omsk" , 0x01DE2D },
+ { "Asia/Oral" , 0x01E014 },
+ { "Asia/Phnom_Penh" , 0x01E1E4 },
+ { "Asia/Pontianak" , 0x01E25C },
+ { "Asia/Pyongyang" , 0x01E31E },
+ { "Asia/Qatar" , 0x01E38B },
+ { "Asia/Qyzylorda" , 0x01E3F1 },
+ { "Asia/Rangoon" , 0x01E5C7 },
+ { "Asia/Riyadh" , 0x01E63F },
+ { "Asia/Saigon" , 0x01E694 },
+ { "Asia/Sakhalin" , 0x01E70C },
+ { "Asia/Samarkand" , 0x01E903 },
+ { "Asia/Seoul" , 0x01EA39 },
+ { "Asia/Shanghai" , 0x01EADD },
+ { "Asia/Singapore" , 0x01EBBD },
+ { "Asia/Taipei" , 0x01EC74 },
+ { "Asia/Tashkent" , 0x01ED8C },
+ { "Asia/Tbilisi" , 0x01EEBD },
+ { "Asia/Tehran" , 0x01F077 },
+ { "Asia/Tel_Aviv" , 0x01F2E5 },
+ { "Asia/Thimbu" , 0x01F614 },
+ { "Asia/Thimphu" , 0x01F67A },
+ { "Asia/Tokyo" , 0x01F6E0 },
+ { "Asia/Ujung_Pandang" , 0x01F769 },
+ { "Asia/Ulaanbaatar" , 0x01F7E6 },
+ { "Asia/Ulan_Bator" , 0x01F941 },
+ { "Asia/Urumqi" , 0x01FA8E },
+ { "Asia/Ust-Nera" , 0x01FB55 },
+ { "Asia/Vientiane" , 0x01FD5A },
+ { "Asia/Vladivostok" , 0x01FDD2 },
+ { "Asia/Yakutsk" , 0x01FFBE },
+ { "Asia/Yekaterinburg" , 0x0201A3 },
+ { "Asia/Yerevan" , 0x0203AE },
+ { "Atlantic/Azores" , 0x0205AE },
+ { "Atlantic/Bermuda" , 0x020AB1 },
+ { "Atlantic/Canary" , 0x020D92 },
+ { "Atlantic/Cape_Verde" , 0x021068 },
+ { "Atlantic/Faeroe" , 0x0210E1 },
+ { "Atlantic/Faroe" , 0x021385 },
+ { "Atlantic/Jan_Mayen" , 0x021629 },
+ { "Atlantic/Madeira" , 0x02195B },
+ { "Atlantic/Reykjavik" , 0x021E64 },
+ { "Atlantic/South_Georgia" , 0x02201D },
+ { "Atlantic/St_Helena" , 0x02222F },
+ { "Atlantic/Stanley" , 0x022061 },
+ { "Australia/ACT" , 0x022284 },
+ { "Australia/Adelaide" , 0x0225A1 },
+ { "Australia/Brisbane" , 0x0228CD },
+ { "Australia/Broken_Hill" , 0x022994 },
+ { "Australia/Canberra" , 0x022CD2 },
+ { "Australia/Currie" , 0x022FEF },
+ { "Australia/Darwin" , 0x023322 },
+ { "Australia/Eucla" , 0x0233A8 },
+ { "Australia/Hobart" , 0x02347D },
+ { "Australia/LHI" , 0x0237DB },
+ { "Australia/Lindeman" , 0x023A76 },
+ { "Australia/Lord_Howe" , 0x023B57 },
+ { "Australia/Melbourne" , 0x023E02 },
+ { "Australia/North" , 0x024127 },
+ { "Australia/NSW" , 0x02419B },
+ { "Australia/Perth" , 0x0244B8 },
+ { "Australia/Queensland" , 0x024590 },
+ { "Australia/South" , 0x02463C },
+ { "Australia/Sydney" , 0x024959 },
+ { "Australia/Tasmania" , 0x024C96 },
+ { "Australia/Victoria" , 0x024FDB },
+ { "Australia/West" , 0x0252F8 },
+ { "Australia/Yancowinna" , 0x0253AE },
+ { "Brazil/Acre" , 0x0256D0 },
+ { "Brazil/DeNoronha" , 0x0257D4 },
+ { "Brazil/East" , 0x0258F4 },
+ { "Brazil/West" , 0x025BD1 },
+ { "Canada/Atlantic" , 0x025CC9 },
+ { "Canada/Central" , 0x0261B1 },
+ { "Canada/East-Saskatchewan" , 0x026ABB },
+ { "Canada/Eastern" , 0x0265CB },
+ { "Canada/Mountain" , 0x026C44 },
+ { "Canada/Newfoundland" , 0x026FBA },
+ { "Canada/Pacific" , 0x0274E5 },
+ { "Canada/Saskatchewan" , 0x0278FE },
+ { "Canada/Yukon" , 0x027A87 },
+ { "CET" , 0x027D8A },
+ { "Chile/Continental" , 0x028093 },
+ { "Chile/EasterIsland" , 0x02842E },
+ { "CST6CDT" , 0x028770 },
+ { "Cuba" , 0x028AC1 },
+ { "EET" , 0x028E34 },
+ { "Egypt" , 0x0290E7 },
+ { "Eire" , 0x0294D6 },
+ { "EST" , 0x0299E7 },
+ { "EST5EDT" , 0x029A2B },
+ { "Etc/GMT" , 0x029D7C },
+ { "Etc/GMT+0" , 0x029E48 },
+ { "Etc/GMT+1" , 0x029ED2 },
+ { "Etc/GMT+10" , 0x029F5F },
+ { "Etc/GMT+11" , 0x029FED },
+ { "Etc/GMT+12" , 0x02A07B },
+ { "Etc/GMT+2" , 0x02A196 },
+ { "Etc/GMT+3" , 0x02A222 },
+ { "Etc/GMT+4" , 0x02A2AE },
+ { "Etc/GMT+5" , 0x02A33A },
+ { "Etc/GMT+6" , 0x02A3C6 },
+ { "Etc/GMT+7" , 0x02A452 },
+ { "Etc/GMT+8" , 0x02A4DE },
+ { "Etc/GMT+9" , 0x02A56A },
+ { "Etc/GMT-0" , 0x029E04 },
+ { "Etc/GMT-1" , 0x029E8C },
+ { "Etc/GMT-10" , 0x029F18 },
+ { "Etc/GMT-11" , 0x029FA6 },
+ { "Etc/GMT-12" , 0x02A034 },
+ { "Etc/GMT-13" , 0x02A0C2 },
+ { "Etc/GMT-14" , 0x02A109 },
+ { "Etc/GMT-2" , 0x02A150 },
+ { "Etc/GMT-3" , 0x02A1DC },
+ { "Etc/GMT-4" , 0x02A268 },
+ { "Etc/GMT-5" , 0x02A2F4 },
+ { "Etc/GMT-6" , 0x02A380 },
+ { "Etc/GMT-7" , 0x02A40C },
+ { "Etc/GMT-8" , 0x02A498 },
+ { "Etc/GMT-9" , 0x02A524 },
+ { "Etc/GMT0" , 0x029DC0 },
+ { "Etc/Greenwich" , 0x02A5B0 },
+ { "Etc/UCT" , 0x02A5F4 },
+ { "Etc/Universal" , 0x02A638 },
+ { "Etc/UTC" , 0x02A67C },
+ { "Etc/Zulu" , 0x02A6C0 },
+ { "Europe/Amsterdam" , 0x02A704 },
+ { "Europe/Andorra" , 0x02AB42 },
+ { "Europe/Athens" , 0x02ADBE },
+ { "Europe/Belfast" , 0x02B101 },
+ { "Europe/Belgrade" , 0x02B638 },
+ { "Europe/Berlin" , 0x02B901 },
+ { "Europe/Bratislava" , 0x02BC65 },
+ { "Europe/Brussels" , 0x02BF97 },
+ { "Europe/Bucharest" , 0x02C3CE },
+ { "Europe/Budapest" , 0x02C6F8 },
+ { "Europe/Busingen" , 0x02CA6B },
+ { "Europe/Chisinau" , 0x02CD22 },
+ { "Europe/Copenhagen" , 0x02D0B0 },
+ { "Europe/Dublin" , 0x02D3BA },
+ { "Europe/Gibraltar" , 0x02D8CB },
+ { "Europe/Guernsey" , 0x02DD22 },
+ { "Europe/Helsinki" , 0x02E259 },
+ { "Europe/Isle_of_Man" , 0x02E50F },
+ { "Europe/Istanbul" , 0x02EA46 },
+ { "Europe/Jersey" , 0x02EE33 },
+ { "Europe/Kaliningrad" , 0x02F36A },
+ { "Europe/Kiev" , 0x02F5D0 },
+ { "Europe/Lisbon" , 0x02F8EC },
+ { "Europe/Ljubljana" , 0x02FDF0 },
+ { "Europe/London" , 0x0300B9 },
+ { "Europe/Luxembourg" , 0x0305F0 },
+ { "Europe/Madrid" , 0x030A46 },
+ { "Europe/Malta" , 0x030E0C },
+ { "Europe/Mariehamn" , 0x0311C5 },
+ { "Europe/Minsk" , 0x03147B },
+ { "Europe/Monaco" , 0x031689 },
+ { "Europe/Moscow" , 0x031AC4 },
+ { "Europe/Nicosia" , 0x031D15 },
+ { "Europe/Oslo" , 0x031FFD },
+ { "Europe/Paris" , 0x03232F },
+ { "Europe/Podgorica" , 0x032775 },
+ { "Europe/Prague" , 0x032A3E },
+ { "Europe/Riga" , 0x032D70 },
+ { "Europe/Rome" , 0x0330B5 },
+ { "Europe/Samara" , 0x033478 },
+ { "Europe/San_Marino" , 0x0336AB },
+ { "Europe/Sarajevo" , 0x033A6E },
+ { "Europe/Simferopol" , 0x033D37 },
+ { "Europe/Skopje" , 0x033F83 },
+ { "Europe/Sofia" , 0x03424C },
+ { "Europe/Stockholm" , 0x034554 },
+ { "Europe/Tallinn" , 0x034803 },
+ { "Europe/Tirane" , 0x034B3D },
+ { "Europe/Tiraspol" , 0x034E43 },
+ { "Europe/Uzhgorod" , 0x0351D1 },
+ { "Europe/Vaduz" , 0x0354E8 },
+ { "Europe/Vatican" , 0x035797 },
+ { "Europe/Vienna" , 0x035B5A },
+ { "Europe/Vilnius" , 0x035E87 },
+ { "Europe/Volgograd" , 0x0361C6 },
+ { "Europe/Warsaw" , 0x0363C6 },
+ { "Europe/Zagreb" , 0x0367A7 },
+ { "Europe/Zaporozhye" , 0x036A70 },
+ { "Europe/Zurich" , 0x036DB1 },
+ { "Factory" , 0x037060 },
+ { "GB" , 0x0370D1 },
+ { "GB-Eire" , 0x037608 },
+ { "GMT" , 0x037B3F },
+ { "GMT+0" , 0x037C0B },
+ { "GMT-0" , 0x037BC7 },
+ { "GMT0" , 0x037B83 },
+ { "Greenwich" , 0x037C4F },
+ { "Hongkong" , 0x037C93 },
+ { "HST" , 0x037E55 },
+ { "Iceland" , 0x037E99 },
+ { "Indian/Antananarivo" , 0x038052 },
+ { "Indian/Chagos" , 0x0380C6 },
+ { "Indian/Christmas" , 0x038128 },
+ { "Indian/Cocos" , 0x03816C },
+ { "Indian/Comoro" , 0x0381B0 },
+ { "Indian/Kerguelen" , 0x038205 },
+ { "Indian/Mahe" , 0x03825A },
+ { "Indian/Maldives" , 0x0382AF },
+ { "Indian/Mauritius" , 0x038304 },
+ { "Indian/Mayotte" , 0x03837A },
+ { "Indian/Reunion" , 0x0383CF },
+ { "Iran" , 0x038424 },
+ { "Israel" , 0x038692 },
+ { "Jamaica" , 0x0389C1 },
+ { "Japan" , 0x038A86 },
+ { "Kwajalein" , 0x038B0F },
+ { "Libya" , 0x038B72 },
+ { "MET" , 0x038C7B },
+ { "Mexico/BajaNorte" , 0x038F84 },
+ { "Mexico/BajaSur" , 0x0392ED },
+ { "Mexico/General" , 0x039532 },
+ { "MST" , 0x039790 },
+ { "MST7MDT" , 0x0397D4 },
+ { "Navajo" , 0x039B25 },
+ { "NZ" , 0x039E9E },
+ { "NZ-CHAT" , 0x03A21C },
+ { "Pacific/Apia" , 0x03A504 },
+ { "Pacific/Auckland" , 0x03A6A0 },
+ { "Pacific/Chatham" , 0x03AA2C },
+ { "Pacific/Chuuk" , 0x03AD23 },
+ { "Pacific/Easter" , 0x03AD7C },
+ { "Pacific/Efate" , 0x03B0DA },
+ { "Pacific/Enderbury" , 0x03B1A0 },
+ { "Pacific/Fakaofo" , 0x03B20E },
+ { "Pacific/Fiji" , 0x03B25F },
+ { "Pacific/Funafuti" , 0x03B3F2 },
+ { "Pacific/Galapagos" , 0x03B436 },
+ { "Pacific/Gambier" , 0x03B4AE },
+ { "Pacific/Guadalcanal" , 0x03B513 },
+ { "Pacific/Guam" , 0x03B568 },
+ { "Pacific/Honolulu" , 0x03B5BE },
+ { "Pacific/Johnston" , 0x03B635 },
+ { "Pacific/Kiritimati" , 0x03B6B4 },
+ { "Pacific/Kosrae" , 0x03B71F },
+ { "Pacific/Kwajalein" , 0x03B77C },
+ { "Pacific/Majuro" , 0x03B7E8 },
+ { "Pacific/Marquesas" , 0x03B847 },
+ { "Pacific/Midway" , 0x03B8AE },
+ { "Pacific/Nauru" , 0x03B938 },
+ { "Pacific/Niue" , 0x03B9B0 },
+ { "Pacific/Norfolk" , 0x03BA0E },
+ { "Pacific/Noumea" , 0x03BA63 },
+ { "Pacific/Pago_Pago" , 0x03BAF3 },
+ { "Pacific/Palau" , 0x03BB7C },
+ { "Pacific/Pitcairn" , 0x03BBC0 },
+ { "Pacific/Pohnpei" , 0x03BC15 },
+ { "Pacific/Ponape" , 0x03BC6A },
+ { "Pacific/Port_Moresby" , 0x03BCAF },
+ { "Pacific/Rarotonga" , 0x03BCF3 },
+ { "Pacific/Saipan" , 0x03BDCF },
+ { "Pacific/Samoa" , 0x03BE32 },
+ { "Pacific/Tahiti" , 0x03BEBB },
+ { "Pacific/Tarawa" , 0x03BF20 },
+ { "Pacific/Tongatapu" , 0x03BF74 },
+ { "Pacific/Truk" , 0x03C000 },
+ { "Pacific/Wake" , 0x03C045 },
+ { "Pacific/Wallis" , 0x03C095 },
+ { "Pacific/Yap" , 0x03C0D9 },
+ { "Poland" , 0x03C11E },
+ { "Portugal" , 0x03C4FF },
+ { "PRC" , 0x03C9FB },
+ { "PST8PDT" , 0x03CAAC },
+ { "ROC" , 0x03CDFD },
+ { "ROK" , 0x03CF15 },
+ { "Singapore" , 0x03CFB9 },
+ { "Turkey" , 0x03D070 },
+ { "UCT" , 0x03D45D },
+ { "Universal" , 0x03D4A1 },
+ { "US/Alaska" , 0x03D4E5 },
+ { "US/Aleutian" , 0x03D84E },
+ { "US/Arizona" , 0x03DBB4 },
+ { "US/Central" , 0x03DC42 },
+ { "US/East-Indiana" , 0x03E64C },
+ { "US/Eastern" , 0x03E14D },
+ { "US/Hawaii" , 0x03E8B6 },
+ { "US/Indiana-Starke" , 0x03E927 },
+ { "US/Michigan" , 0x03EC98 },
+ { "US/Mountain" , 0x03EFCF },
+ { "US/Pacific" , 0x03F348 },
+ { "US/Pacific-New" , 0x03F74D },
+ { "US/Samoa" , 0x03FB52 },
+ { "UTC" , 0x03FBDB },
+ { "W-SU" , 0x03FED2 },
+ { "WET" , 0x03FC1F },
+ { "Zulu" , 0x04010C },
};
/* This is a generated file, do not modify */
-const unsigned char timelib_timezone_db_data_builtin[261880] = {
+const unsigned char timelib_timezone_db_data_builtin[262480] = {
/* Africa/Abidjan */
@@ -712,7 +712,7 @@ const unsigned char timelib_timezone_db_data_builtin[261880] = {
/* Africa/Cairo */
0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0,
+0x00, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0,
0xC8, 0xFA, 0x7B, 0xD0, 0xC9, 0xFC, 0xEF, 0xE0, 0xCA, 0xC7, 0xE8, 0xD0, 0xCB, 0xCB, 0xAE, 0x60,
0xCC, 0xDF, 0x29, 0xD0, 0xCD, 0xAC, 0xE1, 0xE0, 0xCE, 0xC6, 0xF4, 0xD0, 0xCF, 0x8F, 0x66, 0xE0,
0xD0, 0xA9, 0x79, 0xD0, 0xD1, 0x84, 0x60, 0xE0, 0xD2, 0x8A, 0xAD, 0x50, 0xE8, 0x36, 0x63, 0x60,
@@ -743,18 +743,36 @@ const unsigned char timelib_timezone_db_data_builtin[261880] = {
0x43, 0x3C, 0x55, 0xD0, 0x44, 0x51, 0x3E, 0xE0, 0x45, 0x12, 0xFD, 0x50, 0x46, 0x31, 0x20, 0xE0,
0x46, 0xE0, 0x6A, 0x50, 0x48, 0x11, 0x02, 0xE0, 0x48, 0xB7, 0x11, 0xD0, 0x49, 0xF0, 0xE4, 0xE0,
0x4A, 0x8D, 0xB9, 0x50, 0x4B, 0xDA, 0x01, 0x60, 0x4C, 0x61, 0xBD, 0xD0, 0x4C, 0x89, 0x58, 0xE0,
-0x4C, 0xA4, 0xFA, 0x50, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+0x4C, 0xA4, 0xFA, 0x50, 0x53, 0x75, 0x38, 0xE0, 0x53, 0xAF, 0x3A, 0xE0, 0x53, 0xD6, 0xC7, 0xE0,
+0x54, 0x24, 0x82, 0x50, 0x55, 0x39, 0x6B, 0x60, 0x55, 0x81, 0xED, 0xE0, 0x55, 0xA9, 0x7A, 0xE0,
+0x56, 0x04, 0x64, 0x50, 0x57, 0x22, 0x87, 0xE0, 0x57, 0x55, 0xF2, 0x60, 0x57, 0x7D, 0x7F, 0x60,
+0x57, 0xED, 0x80, 0xD0, 0x59, 0x02, 0x69, 0xE0, 0x59, 0x28, 0xA5, 0x60, 0x59, 0x50, 0x32, 0x60,
+0x59, 0xCD, 0x62, 0xD0, 0x5A, 0xE2, 0x4B, 0xE0, 0x5A, 0xFB, 0x58, 0x60, 0x5B, 0x22, 0xE5, 0x60,
+0x5B, 0xAD, 0x44, 0xD0, 0x5C, 0xC2, 0x2D, 0xE0, 0x5C, 0xCF, 0x5C, 0xE0, 0x5C, 0xF6, 0xE9, 0xE0,
+0x5D, 0x8D, 0x26, 0xD0, 0x5E, 0xC9, 0x9C, 0xE0, 0x5F, 0x6D, 0x08, 0xD0, 0x60, 0x9C, 0x4F, 0xE0,
+0x61, 0x56, 0x25, 0x50, 0x62, 0x70, 0x54, 0x60, 0x63, 0x36, 0x07, 0x50, 0x64, 0x4A, 0xF0, 0x60,
+0x65, 0x15, 0xE9, 0x50, 0x66, 0x2A, 0xD2, 0x60, 0x66, 0xF5, 0xCB, 0x50, 0x68, 0x0A, 0xB4, 0x60,
+0x68, 0xD5, 0xAD, 0x50, 0x69, 0xEA, 0x96, 0x60, 0x6A, 0xB5, 0x8F, 0x50, 0x6B, 0xD3, 0xB2, 0xE0,
+0x6C, 0x9E, 0xAB, 0xD0, 0x6D, 0xB3, 0x94, 0xE0, 0x6E, 0x7E, 0x8D, 0xD0, 0x6F, 0x93, 0x76, 0xE0,
+0x70, 0x5E, 0x6F, 0xD0, 0x71, 0x73, 0x58, 0xE0, 0x72, 0x3E, 0x51, 0xD0, 0x73, 0x53, 0x3A, 0xE0,
+0x74, 0x1E, 0x33, 0xD0, 0x75, 0x3C, 0x57, 0x60, 0x76, 0x07, 0x50, 0x50, 0x77, 0x1C, 0x39, 0x60,
+0x77, 0xE7, 0x32, 0x50, 0x78, 0xFC, 0x1B, 0x60, 0x79, 0xC7, 0x14, 0x50, 0x7A, 0xDB, 0xFD, 0x60,
+0x7B, 0xA6, 0xF6, 0x50, 0x7C, 0xBB, 0xDF, 0x60, 0x7D, 0x86, 0xD8, 0x50, 0x7E, 0x9B, 0xC1, 0x60,
+0x7F, 0x66, 0xBA, 0x50, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x00, 0x03, 0x00, 0x00,
-0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00,
-0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00,
-0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x2E, 0x88, 0x01, 0x42, 0x57, 0x88, 0x00,
-0x00, 0x00, 0x00,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x00, 0x03, 0x00, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00,
+0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20,
+0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xB7, 0x2E, 0x88, 0x01, 0x42, 0x57, 0x88, 0x00, 0x00, 0x00, 0x00,
/* Africa/Casablanca */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -12036,7 +12054,7 @@ const unsigned char timelib_timezone_db_data_builtin[261880] = {
/* Egypt */
0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0,
+0x00, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0,
0xC8, 0xFA, 0x7B, 0xD0, 0xC9, 0xFC, 0xEF, 0xE0, 0xCA, 0xC7, 0xE8, 0xD0, 0xCB, 0xCB, 0xAE, 0x60,
0xCC, 0xDF, 0x29, 0xD0, 0xCD, 0xAC, 0xE1, 0xE0, 0xCE, 0xC6, 0xF4, 0xD0, 0xCF, 0x8F, 0x66, 0xE0,
0xD0, 0xA9, 0x79, 0xD0, 0xD1, 0x84, 0x60, 0xE0, 0xD2, 0x8A, 0xAD, 0x50, 0xE8, 0x36, 0x63, 0x60,
@@ -12067,18 +12085,36 @@ const unsigned char timelib_timezone_db_data_builtin[261880] = {
0x43, 0x3C, 0x55, 0xD0, 0x44, 0x51, 0x3E, 0xE0, 0x45, 0x12, 0xFD, 0x50, 0x46, 0x31, 0x20, 0xE0,
0x46, 0xE0, 0x6A, 0x50, 0x48, 0x11, 0x02, 0xE0, 0x48, 0xB7, 0x11, 0xD0, 0x49, 0xF0, 0xE4, 0xE0,
0x4A, 0x8D, 0xB9, 0x50, 0x4B, 0xDA, 0x01, 0x60, 0x4C, 0x61, 0xBD, 0xD0, 0x4C, 0x89, 0x58, 0xE0,
-0x4C, 0xA4, 0xFA, 0x50, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+0x4C, 0xA4, 0xFA, 0x50, 0x53, 0x75, 0x38, 0xE0, 0x53, 0xAF, 0x3A, 0xE0, 0x53, 0xD6, 0xC7, 0xE0,
+0x54, 0x24, 0x82, 0x50, 0x55, 0x39, 0x6B, 0x60, 0x55, 0x81, 0xED, 0xE0, 0x55, 0xA9, 0x7A, 0xE0,
+0x56, 0x04, 0x64, 0x50, 0x57, 0x22, 0x87, 0xE0, 0x57, 0x55, 0xF2, 0x60, 0x57, 0x7D, 0x7F, 0x60,
+0x57, 0xED, 0x80, 0xD0, 0x59, 0x02, 0x69, 0xE0, 0x59, 0x28, 0xA5, 0x60, 0x59, 0x50, 0x32, 0x60,
+0x59, 0xCD, 0x62, 0xD0, 0x5A, 0xE2, 0x4B, 0xE0, 0x5A, 0xFB, 0x58, 0x60, 0x5B, 0x22, 0xE5, 0x60,
+0x5B, 0xAD, 0x44, 0xD0, 0x5C, 0xC2, 0x2D, 0xE0, 0x5C, 0xCF, 0x5C, 0xE0, 0x5C, 0xF6, 0xE9, 0xE0,
+0x5D, 0x8D, 0x26, 0xD0, 0x5E, 0xC9, 0x9C, 0xE0, 0x5F, 0x6D, 0x08, 0xD0, 0x60, 0x9C, 0x4F, 0xE0,
+0x61, 0x56, 0x25, 0x50, 0x62, 0x70, 0x54, 0x60, 0x63, 0x36, 0x07, 0x50, 0x64, 0x4A, 0xF0, 0x60,
+0x65, 0x15, 0xE9, 0x50, 0x66, 0x2A, 0xD2, 0x60, 0x66, 0xF5, 0xCB, 0x50, 0x68, 0x0A, 0xB4, 0x60,
+0x68, 0xD5, 0xAD, 0x50, 0x69, 0xEA, 0x96, 0x60, 0x6A, 0xB5, 0x8F, 0x50, 0x6B, 0xD3, 0xB2, 0xE0,
+0x6C, 0x9E, 0xAB, 0xD0, 0x6D, 0xB3, 0x94, 0xE0, 0x6E, 0x7E, 0x8D, 0xD0, 0x6F, 0x93, 0x76, 0xE0,
+0x70, 0x5E, 0x6F, 0xD0, 0x71, 0x73, 0x58, 0xE0, 0x72, 0x3E, 0x51, 0xD0, 0x73, 0x53, 0x3A, 0xE0,
+0x74, 0x1E, 0x33, 0xD0, 0x75, 0x3C, 0x57, 0x60, 0x76, 0x07, 0x50, 0x50, 0x77, 0x1C, 0x39, 0x60,
+0x77, 0xE7, 0x32, 0x50, 0x78, 0xFC, 0x1B, 0x60, 0x79, 0xC7, 0x14, 0x50, 0x7A, 0xDB, 0xFD, 0x60,
+0x7B, 0xA6, 0xF6, 0x50, 0x7C, 0xBB, 0xDF, 0x60, 0x7D, 0x86, 0xD8, 0x50, 0x7E, 0x9B, 0xC1, 0x60,
+0x7F, 0x66, 0xBA, 0x50, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x00, 0x03, 0x00, 0x00,
-0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00,
-0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00,
-0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00,
-0x00, 0x00, 0x00,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x00, 0x03, 0x00, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00,
+0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20,
+0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
/* Eire */
0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -18435,4 +18471,4 @@ const unsigned char timelib_timezone_db_data_builtin[261880] = {
0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80,
0x00, 0x00, 0x00, 0x00, };
-const timelib_tzdb timezonedb_builtin = { "2014.2", 580, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2014.3", 580, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/date/tests/bug67251.phpt b/ext/date/tests/bug67251.phpt
new file mode 100644
index 000000000..68c56a161
--- /dev/null
+++ b/ext/date/tests/bug67251.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Bug #67251 (date_parse_from_format out-of-bounds read)
+--INI--
+date.timezone=Europe/Berlin
+--FILE--
+<?php
+var_dump(date_parse_from_format("\\","AAAABBBB"));
+--EXPECT--
+array(12) {
+ ["year"]=>
+ bool(false)
+ ["month"]=>
+ bool(false)
+ ["day"]=>
+ bool(false)
+ ["hour"]=>
+ bool(false)
+ ["minute"]=>
+ bool(false)
+ ["second"]=>
+ bool(false)
+ ["fraction"]=>
+ bool(false)
+ ["warning_count"]=>
+ int(0)
+ ["warnings"]=>
+ array(0) {
+ }
+ ["error_count"]=>
+ int(2)
+ ["errors"]=>
+ array(1) {
+ [0]=>
+ string(13) "Trailing data"
+ }
+ ["is_localtime"]=>
+ bool(false)
+}
diff --git a/ext/date/tests/bug67253.phpt b/ext/date/tests/bug67253.phpt
new file mode 100644
index 000000000..b28cbe63c
--- /dev/null
+++ b/ext/date/tests/bug67253.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Bug #67253 (timelib_meridian_with_check out-of-bounds read)
+--INI--
+date.timezone=Europe/Berlin
+--FILE--
+<?php
+$z = '';
+var_dump(date_parse_from_format("aHa0", "0=G{$z}9UCNnF"));
+--EXPECT--
+array(12) {
+ ["year"]=>
+ bool(false)
+ ["month"]=>
+ bool(false)
+ ["day"]=>
+ bool(false)
+ ["hour"]=>
+ int(0)
+ ["minute"]=>
+ int(0)
+ ["second"]=>
+ int(0)
+ ["fraction"]=>
+ bool(false)
+ ["warning_count"]=>
+ int(0)
+ ["warnings"]=>
+ array(0) {
+ }
+ ["error_count"]=>
+ int(3)
+ ["errors"]=>
+ array(3) {
+ [0]=>
+ string(51) "Meridian can only come after an hour has been found"
+ [1]=>
+ string(29) "A meridian could not be found"
+ [9]=>
+ string(12) "Data missing"
+ }
+ ["is_localtime"]=>
+ bool(false)
+}
+
diff --git a/ext/ext_skel b/ext/ext_skel
index 061e78d64..e6b01fd4f 100755
--- a/ext/ext_skel
+++ b/ext/ext_skel
@@ -320,7 +320,7 @@ To use your new extension, you will have to execute the following steps:
3. $ ./buildconf
4. $ ./configure --[with|enable]-$extname
5. $ make
-6. $ ./php -f ext/$extname/$extname.php
+6. $ ./sapi/cli/php -f ext/$extname/$extname.php
7. $ vi ext/$extname/$extname.c
8. $ make
diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch
index fa708b6c8..662537bf7 100644
--- a/ext/fileinfo/libmagic.patch
+++ b/ext/fileinfo/libmagic.patch
@@ -3286,4 +3286,16 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
break;
}
case FILE_INDIRECT:
+diff -u libmagic.orig/strcasestr.c libmagic/strcasestr.c
+--- libmagic.orig/strcasestr.c Thu Dec 5 17:57:50 2013
++++ libmagic/strcasestr.c Sun May 4 21:29:20 2014
+@@ -37,6 +37,8 @@
+ __RCSID("$NetBSD: strncasecmp.c,v 1.2 2007/06/04 18:19:27 christos Exp $");
+ #endif /* LIBC_SCCS and not lint */
+
++#include "php_stdint.h"
++
+ #include <assert.h>
+ #include <ctype.h>
+ #include <string.h>
diff --git a/ext/fileinfo/libmagic/strcasestr.c b/ext/fileinfo/libmagic/strcasestr.c
index 546ed3f96..e1434e69e 100644
--- a/ext/fileinfo/libmagic/strcasestr.c
+++ b/ext/fileinfo/libmagic/strcasestr.c
@@ -37,6 +37,8 @@ __RCSID("$NetBSD: strcasestr.c,v 1.3 2005/11/29 03:12:00 christos Exp $");
__RCSID("$NetBSD: strncasecmp.c,v 1.2 2007/06/04 18:19:27 christos Exp $");
#endif /* LIBC_SCCS and not lint */
+#include "php_stdint.h"
+
#include <assert.h>
#include <ctype.h>
#include <string.h>
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index f54fb9ff8..f67e80bf8 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -5274,7 +5274,7 @@ PHP_FUNCTION(imageaffinematrixget)
{
double affine[6];
long type;
- zval *options;
+ zval *options = NULL;
zval **tmp;
int res = GD_FALSE, i;
@@ -5286,7 +5286,7 @@ PHP_FUNCTION(imageaffinematrixget)
case GD_AFFINE_TRANSLATE:
case GD_AFFINE_SCALE: {
double x, y;
- if (Z_TYPE_P(options) != IS_ARRAY) {
+ if (!options || Z_TYPE_P(options) != IS_ARRAY) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array expected as options");
RETURN_FALSE;
}
@@ -5333,6 +5333,10 @@ PHP_FUNCTION(imageaffinematrixget)
case GD_AFFINE_SHEAR_VERTICAL: {
double angle;
+ if (!options) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number is expected as option");
+ RETURN_FALSE;
+ }
convert_to_double_ex(&options);
angle = Z_DVAL_P(options);
diff --git a/ext/gd/tests/bug67248.phpt b/ext/gd/tests/bug67248.phpt
new file mode 100644
index 000000000..9c83966a6
--- /dev/null
+++ b/ext/gd/tests/bug67248.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Bug #67248 (imageaffinematrixget missing check of parameters)
+--SKIPIF--
+<?php
+ if(!extension_loaded('gd')){ die('skip gd extension not available')}
+ if(!function_exists('imageaffinematrixget')) die('skip imageaffinematrixget() not available');
+?>
+--FILE--
+<?php
+for($i=0;$i<7;$i++) {
+ imageaffinematrixget($i);
+}
+?>
+--EXPECTF--
+Warning: imageaffinematrixget(): Array expected as options in %s on line %d
+
+Warning: imageaffinematrixget(): Array expected as options in %s on line %d
+
+Warning: imageaffinematrixget(): Number is expected as option in %s on line %d
+
+Warning: imageaffinematrixget(): Number is expected as option in %s on line %d
+
+Warning: imageaffinematrixget(): Number is expected as option in %s on line %d
+
+Warning: imageaffinematrixget(): Invalid type for element 5 in %s on line %d
+
+Warning: imageaffinematrixget(): Invalid type for element 6 in %s on line %d
diff --git a/ext/interbase/php_ibase_includes.h b/ext/interbase/php_ibase_includes.h
index c994a92da..6671c9162 100644
--- a/ext/interbase/php_ibase_includes.h
+++ b/ext/interbase/php_ibase_includes.h
@@ -35,6 +35,7 @@
#define IB_STATUS (IBG(status))
+/* XXX ZEND_DEBUG_ is misleading, it should be something like IBASE_DEBUG. */
#ifdef ZEND_DEBUG_
#define IBDEBUG(a) php_printf("::: %s (%d)\n", a, __LINE__);
#endif
diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c
index 4b1b924d0..9ea297039 100644
--- a/ext/mbstring/php_mbregex.c
+++ b/ext/mbstring/php_mbregex.c
@@ -64,8 +64,8 @@ static void php_mb_regex_free_cache(php_mb_regex_t **pre)
/* {{{ _php_mb_regex_globals_ctor */
static int _php_mb_regex_globals_ctor(zend_mb_regex_globals *pglobals TSRMLS_DC)
{
- pglobals->default_mbctype = ONIG_ENCODING_EUC_JP;
- pglobals->current_mbctype = ONIG_ENCODING_EUC_JP;
+ pglobals->default_mbctype = ONIG_ENCODING_UTF8;
+ pglobals->current_mbctype = ONIG_ENCODING_UTF8;
zend_hash_init(&(pglobals->ht_rc), 0, NULL, (void (*)(void *)) php_mb_regex_free_cache, 1);
pglobals->search_str = (zval*) NULL;
pglobals->search_re = (php_mb_regex_t*)NULL;
diff --git a/ext/mbstring/tests/mb_eregi_replace.phpt b/ext/mbstring/tests/mb_eregi_replace.phpt
index 22ba0af13..0405d8984 100644
--- a/ext/mbstring/tests/mb_eregi_replace.phpt
+++ b/ext/mbstring/tests/mb_eregi_replace.phpt
@@ -27,8 +27,9 @@ function do_translit($st) {
$st = mb_eregi_replace($i,$u,$st);
}
return $st;
-}
+}
+mb_regex_encoding('ISO-8859-1');
echo do_translit("Пеар");
?>
--EXPECT--
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index 00cbcf204..de5cd567b 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -575,7 +575,11 @@ PHP_FUNCTION(mysqli_query)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty query");
RETURN_FALSE;
}
+#ifdef MYSQLI_USE_MYSQLND
if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~(MYSQLI_ASYNC | MYSQLI_STORE_RESULT_COPY_DATA)) != MYSQLI_STORE_RESULT) {
+#else
+ if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~MYSQLI_ASYNC) != MYSQLI_STORE_RESULT) {
+#endif
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid value for resultmode");
RETURN_FALSE;
}
@@ -609,7 +613,11 @@ PHP_FUNCTION(mysqli_query)
RETURN_TRUE;
}
+#ifdef MYSQLI_USE_MYSQLND
switch (resultmode & ~(MYSQLI_ASYNC | MYSQLI_STORE_RESULT_COPY_DATA)) {
+#else
+ switch (resultmode & ~MYSQLI_ASYNC) {
+#endif
case MYSQLI_STORE_RESULT:
#ifdef MYSQLI_USE_MYSQLND
if (resultmode & MYSQLI_STORE_RESULT_COPY_DATA) {
diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h
index e28caebf9..b1bfb56a8 100644
--- a/ext/mysqli/mysqli_priv.h
+++ b/ext/mysqli/mysqli_priv.h
@@ -118,7 +118,7 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
#else
/* libmysql */
#define MYSQLI_ASYNC 0
-#define MYSQLI_STORE_RESULT_OFS 0
+#define MYSQLI_STORE_RESULT_COPY_DATA 0
#endif
/* for mysqli_fetch_assoc */
diff --git a/ext/pcre/pcrelib/pcre_compile.c b/ext/pcre/pcrelib/pcre_compile.c
index c170c47a0..853fb2479 100644
--- a/ext/pcre/pcrelib/pcre_compile.c
+++ b/ext/pcre/pcrelib/pcre_compile.c
@@ -3623,7 +3623,7 @@ for (;;)
break;
case OP_MINUPTO:
- *code += OP_MINUPTO - OP_UPTO;
+ *code += OP_POSUPTO - OP_MINUPTO;
break;
}
}
diff --git a/ext/pcre/tests/bug67238.phpt b/ext/pcre/tests/bug67238.phpt
new file mode 100644
index 000000000..117662af6
--- /dev/null
+++ b/ext/pcre/tests/bug67238.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #67238 Ungreedy and min/max quantifier bug in PCRE 8.34 upstream
+--FILE--
+<?php
+
+echo preg_match('/a{1,3}b/U', 'ab');
+
+?>
+--EXPECTF--
+1
diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c
index 407edda0f..75aadfbc5 100644
--- a/ext/phar/phar_object.c
+++ b/ext/phar/phar_object.c
@@ -1477,7 +1477,7 @@ static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* {{{
}
close_fp = 0;
- opened = (char *) estrndup(str, sizeof("[stream]") + 1);
+ opened = (char *) estrndup(str, sizeof("[stream]") - 1);
goto after_open_fp;
case IS_OBJECT:
if (instanceof_function(Z_OBJCE_PP(value), spl_ce_SplFileInfo TSRMLS_CC)) {
diff --git a/ext/session/tests/031.phpt b/ext/session/tests/031.phpt
index e8deb3dac..7486c4b86 100644
--- a/ext/session/tests/031.phpt
+++ b/ext/session/tests/031.phpt
@@ -2,6 +2,7 @@
setting hash_function to sha512 and hash_bits_per_character > 4 should not crash
--SKIPIF--
<?php include('skipif.inc'); ?>
+<?php if (!extension_loaded('hash')) die('skip hash extension not available'); ?>
--INI--
session.use_cookies=0
session.cache_limiter=
diff --git a/ext/session/tests/session_set_save_handler_class_005.phpt b/ext/session/tests/session_set_save_handler_class_005.phpt
index a996eb8d2..c74c81de1 100644
--- a/ext/session/tests/session_set_save_handler_class_005.phpt
+++ b/ext/session/tests/session_set_save_handler_class_005.phpt
@@ -3,6 +3,7 @@ Test session_set_save_handler() : incomplete implementation
--INI--
session.save_handler=files
session.name=PHPSESSID
+session.gc_probability=0
--SKIPIF--
<?php include('skipif.inc'); ?>
--FILE--
diff --git a/ext/session/tests/session_set_save_handler_class_012.phpt b/ext/session/tests/session_set_save_handler_class_012.phpt
index 706ef793e..3899d2881 100644
--- a/ext/session/tests/session_set_save_handler_class_012.phpt
+++ b/ext/session/tests/session_set_save_handler_class_012.phpt
@@ -3,6 +3,7 @@ Test session_set_save_handler() : incorrect arguments for existing handler open
--INI--
session.save_handler=files
session.name=PHPSESSID
+session.gc_probability=0
--SKIPIF--
<?php include('skipif.inc'); ?>
--FILE--
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index f84e1e014..a915862ec 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -1269,6 +1269,9 @@ SXE_METHOD(xpath)
}
if (!sxe->node) {
php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe->document->ptr), NULL TSRMLS_CC);
+ if (!sxe->node) {
+ RETURN_FALSE;
+ }
}
nodeptr = php_sxe_get_first_node(sxe, sxe->node->node TSRMLS_CC);
@@ -1533,15 +1536,18 @@ SXE_METHOD(getDocNamespaces)
return;
}
- array_init(return_value);
-
sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
if(from_root){
node = xmlDocGetRootElement((xmlDocPtr)sxe->document->ptr);
}else{
GET_NODE(sxe, node);
}
-
+
+ if (node == NULL) {
+ RETURN_FALSE;
+ }
+
+ array_init(return_value);
sxe_add_registered_namespaces(sxe, node, recursive, return_value TSRMLS_CC);
}
/* }}} */
diff --git a/ext/simplexml/tests/SimpleXMLElement_getDocNamespaces.phpt b/ext/simplexml/tests/SimpleXMLElement_getDocNamespaces.phpt
new file mode 100644
index 000000000..9df759100
--- /dev/null
+++ b/ext/simplexml/tests/SimpleXMLElement_getDocNamespaces.phpt
@@ -0,0 +1,9 @@
+--TEST--
+Testing getDocNamespaces() with invalid XML
+--FILE--
+<?php
+$xml = @new SimpleXMLElement("X",1);
+var_dump($xml->getDocNamespaces());
+?>
+--EXPECTF--
+bool(false)
diff --git a/ext/simplexml/tests/SimpleXMLElement_xpath.phpt b/ext/simplexml/tests/SimpleXMLElement_xpath.phpt
new file mode 100644
index 000000000..4a613c2e5
--- /dev/null
+++ b/ext/simplexml/tests/SimpleXMLElement_xpath.phpt
@@ -0,0 +1,8 @@
+--TEST--
+Testing xpath() with invalid XML
+--FILE--
+<?php
+$xml = @simplexml_load_string("XXXXXXX^",$x,0x6000000000000001);
+var_dump($xml->xpath("BBBB"));
+--EXPECT--
+bool(false)
diff --git a/ext/spl/spl_fixedarray.c b/ext/spl/spl_fixedarray.c
index 0519edaa2..2ad50359f 100644
--- a/ext/spl/spl_fixedarray.c
+++ b/ext/spl/spl_fixedarray.c
@@ -116,7 +116,7 @@ static void spl_fixedarray_resize(spl_fixedarray *array, long size TSRMLS_DC) /*
array->elements = NULL;
}
} else if (size > array->size) {
- array->elements = erealloc(array->elements, sizeof(zval *) * size);
+ array->elements = safe_erealloc(array->elements, size, sizeof(zval *), 0);
memset(array->elements + array->size, '\0', sizeof(zval *) * (size - array->size));
} else { /* size < array->size */
long i;
diff --git a/ext/spl/tests/bug67247.phpt b/ext/spl/tests/bug67247.phpt
new file mode 100644
index 000000000..cb71445d7
--- /dev/null
+++ b/ext/spl/tests/bug67247.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #67247 (spl_fixedarray_resize integer overflow)
+--FILE--
+<?php
+$ar = new SplFixedArray(1);
+echo "size: ".$ar->getSize()."\n";
+$ar->setSize((PHP_INT_SIZE==8)?0x2000000000000001:0x40000001);
+echo "size: ".$ar->getSize()."\n";
+?>
+--EXPECTF--
+size: 1
+
+Fatal error: Possible integer overflow in memory allocation (%d * %d + 0) in %s on line %d
diff --git a/ext/standard/html.c b/ext/standard/html.c
index 5bbe39ccb..fd210c808 100644
--- a/ext/standard/html.c
+++ b/ext/standard/html.c
@@ -901,7 +901,7 @@ static inline size_t write_octet_sequence(unsigned char *buf, enum entity_charse
#if 0
return php_mb2_int_to_char(buf, code);
#else
-#ifdef ZEND_DEBUG
+#if ZEND_DEBUG
assert(code <= 0xFFU);
#endif
*buf = code;
@@ -912,7 +912,7 @@ static inline size_t write_octet_sequence(unsigned char *buf, enum entity_charse
#if 0 /* idem */
return php_mb2_int_to_char(buf, code);
#else
-#ifdef ZEND_DEBUG
+#if ZEND_DEBUG
assert(code <= 0xFFU);
#endif
*buf = code;
diff --git a/ext/standard/iptc.c b/ext/standard/iptc.c
index 325733910..ad4fa6502 100644
--- a/ext/standard/iptc.c
+++ b/ext/standard/iptc.c
@@ -329,6 +329,9 @@ PHP_FUNCTION(iptcparse)
recnum = buffer[ inx++ ];
if (buffer[ inx ] & (unsigned char) 0x80) { /* long tag */
+ if((inx+6) >= str_len) {
+ break;
+ }
len = (((long) buffer[ inx + 2 ]) << 24) + (((long) buffer[ inx + 3 ]) << 16) +
(((long) buffer[ inx + 4 ]) << 8) + (((long) buffer[ inx + 5 ]));
inx += 6;
diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c
index 3deb330a8..7e21e95d1 100644
--- a/ext/standard/php_fopen_wrapper.c
+++ b/ext/standard/php_fopen_wrapper.c
@@ -64,7 +64,7 @@ php_stream_ops php_stream_output_ops = {
};
typedef struct php_stream_input { /* {{{ */
- php_stream **body_ptr;
+ php_stream *body;
off_t position;
} php_stream_input_t;
/* }}} */
@@ -85,13 +85,13 @@ static size_t php_stream_input_read(php_stream *stream, char *buf, size_t count
int read_bytes = sapi_read_post_block(buf, count TSRMLS_CC);
if (read_bytes > 0) {
- php_stream_seek(*input->body_ptr, 0, SEEK_END);
- php_stream_write(*input->body_ptr, buf, read_bytes);
+ php_stream_seek(input->body, 0, SEEK_END);
+ php_stream_write(input->body, buf, read_bytes);
}
}
- php_stream_seek(*input->body_ptr, input->position, SEEK_SET);
- read = php_stream_read(*input->body_ptr, buf, count);
+ php_stream_seek(input->body, input->position, SEEK_SET);
+ read = php_stream_read(input->body, buf, count);
if (!read || read == (size_t) -1) {
stream->eof = 1;
@@ -122,9 +122,9 @@ static int php_stream_input_seek(php_stream *stream, off_t offset, int whence, o
{
php_stream_input_t *input = stream->abstract;
- if (*input->body_ptr) {
- int sought = php_stream_seek(*input->body_ptr, offset, whence);
- *newoffset = (*input->body_ptr)->position;
+ if (input->body) {
+ int sought = php_stream_seek(input->body, offset, whence);
+ *newoffset = (input->body)->position;
return sought;
}
@@ -228,10 +228,11 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa
}
input = ecalloc(1, sizeof(*input));
- if (*(input->body_ptr = &SG(request_info).request_body)) {
- php_stream_rewind(*input->body_ptr);
+ if ((input->body = SG(request_info).request_body)) {
+ php_stream_rewind(input->body);
} else {
- *input->body_ptr = php_stream_temp_create(TEMP_STREAM_DEFAULT, SAPI_POST_BLOCK_SIZE);
+ input->body = php_stream_temp_create(TEMP_STREAM_DEFAULT, SAPI_POST_BLOCK_SIZE);
+ SG(request_info).request_body = input->body;
}
return php_stream_alloc(&php_stream_input_ops, input, 0, "rb");
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c
index 8d42a51af..68b4cceaa 100644
--- a/ext/standard/streamsfuncs.c
+++ b/ext/standard/streamsfuncs.c
@@ -40,6 +40,8 @@ typedef unsigned long long php_timeout_ull;
typedef unsigned __int64 php_timeout_ull;
#endif
+#define GET_CTX_OPT(stream, wrapper, name, val) (stream->context && SUCCESS == php_stream_context_get_option(stream->context, wrapper, name, &val))
+
static php_stream_context *decode_context_param(zval *contextresource TSRMLS_DC);
/* Streams based network functions */
@@ -1491,16 +1493,27 @@ PHP_FUNCTION(stream_socket_enable_crypto)
long cryptokind = 0;
zval *zstream, *zsessstream = NULL;
php_stream *stream, *sessstream = NULL;
- zend_bool enable;
+ zend_bool enable, cryptokindnull;
int ret;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb|lr", &zstream, &enable, &cryptokind, &zsessstream) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb|l!r", &zstream, &enable, &cryptokind, &cryptokindnull, &zsessstream) == FAILURE) {
RETURN_FALSE;
}
php_stream_from_zval(stream, &zstream);
- if (ZEND_NUM_ARGS() >= 3) {
+ if (enable) {
+ if (ZEND_NUM_ARGS() < 3 || cryptokindnull) {
+ zval **val;
+
+ if (!GET_CTX_OPT(stream, "ssl", "crypto_method", val)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "When enabling encryption you must specify the crypto type");
+ RETURN_FALSE;
+ }
+
+ cryptokind = Z_LVAL_PP(val);
+ }
+
if (zsessstream) {
php_stream_from_zval(sessstream, &zsessstream);
}
@@ -1508,9 +1521,6 @@ PHP_FUNCTION(stream_socket_enable_crypto)
if (php_stream_xport_crypto_setup(stream, cryptokind, sessstream TSRMLS_CC) < 0) {
RETURN_FALSE;
}
- } else if (enable) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "When enabling encryption you must specify the crypto type");
- RETURN_FALSE;
}
ret = php_stream_xport_crypto_enable(stream, enable TSRMLS_CC);
diff --git a/ext/standard/tests/image/bug67250.phpt b/ext/standard/tests/image/bug67250.phpt
new file mode 100644
index 000000000..607de9f3b
--- /dev/null
+++ b/ext/standard/tests/image/bug67250.phpt
@@ -0,0 +1,8 @@
+--TEST--
+Bug #67250 (iptcparse out-of-bounds read)
+--FILE--
+<?php
+var_dump(iptcparse("\x1C\x02_\x80___"));
+?>
+--EXPECT--
+bool(false)
diff --git a/ext/standard/tests/strings/bug67252.phpt b/ext/standard/tests/strings/bug67252.phpt
new file mode 100644
index 000000000..80a6ebcf1
--- /dev/null
+++ b/ext/standard/tests/strings/bug67252.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #67252 (convert_uudecode out-of-bounds read)
+--FILE--
+<?php
+
+$a = "M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A"."\n"."a.";
+var_dump(convert_uudecode($a));
+
+?>
+--EXPECTF--
+
+Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d
+bool(false)
diff --git a/ext/standard/uuencode.c b/ext/standard/uuencode.c
index 52e892ed9..8544aef9f 100644
--- a/ext/standard/uuencode.c
+++ b/ext/standard/uuencode.c
@@ -151,6 +151,9 @@ PHPAPI int php_uudecode(char *src, int src_len, char **dest) /* {{{ */
}
while (s < ee) {
+ if(s+4 > e) {
+ goto err;
+ }
*p++ = PHP_UU_DEC(*s) << 2 | PHP_UU_DEC(*(s + 1)) >> 4;
*p++ = PHP_UU_DEC(*(s + 1)) << 4 | PHP_UU_DEC(*(s + 2)) >> 2;
*p++ = PHP_UU_DEC(*(s + 2)) << 6 | PHP_UU_DEC(*(s + 3));