diff options
author | Rasmus Lerdorf <rasmus@php.net> | 2014-11-05 12:39:42 -0800 |
---|---|---|
committer | Rasmus Lerdorf <rasmus@php.net> | 2014-11-05 12:39:42 -0800 |
commit | 63831d6984cc33e28b35deb9ebf4c267c90464b6 (patch) | |
tree | 26d8e2fa1852952351cb8dbc9f6824f06a6396ea | |
parent | 37d5a2b18febc07088b15f06c6e5cc73eca782a0 (diff) | |
parent | 53266476e63608e4ce03c6d584864755806b28fe (diff) | |
download | php-git-63831d6984cc33e28b35deb9ebf4c267c90464b6.tar.gz |
Merge branch 'PHP-5.5' of git.php.net:php-src into PHP-5.5
* 'PHP-5.5' of git.php.net:php-src: (29 commits)
fix dir separator in test
update NEWS
Fix bug #63595 GMP memory management conflicts with other libraries using GMP
Initialize the offset table - PCRE may sometimes miss offsets
set default response code to 200
set default response code to 200
Fixed bug #66584 Segmentation fault on statement deallocation
fix ZTS build
Added PGSQL_TEST_CONNSTR env var support for ext/pgsql tests
Fixed bug #67462 PDO_PGSQL::beginTransaction() wrongly throws exception when not in transaction
don't try to send in the test results until we restored qa.php.net
Don't treat warnings as failures in the junit output
Fixed test to work with recent libcurl versions
PHP 5.5.20 now
Ensure we have enough input data before parsing date
Fix bug #68095 - invalid read in php_getopt()
NEWS
Fix bug #63595 GMP memory management conflicts with other libraries using GMP
- Updated to version 2014.9 (2014i)
updated libmagic.patch in 5.5
...
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | NEWS | 16 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | ext/curl/tests/bug68089.phpt | 2 | ||||
-rw-r--r-- | ext/date/lib/timezonedb.h | 773 | ||||
-rw-r--r-- | ext/fileinfo/libmagic.patch | 204 | ||||
-rw-r--r-- | ext/fileinfo/libmagic/readelf.c | 7 | ||||
-rw-r--r-- | ext/gmp/gmp.c | 26 | ||||
-rw-r--r-- | ext/pcre/php_pcre.c | 2 | ||||
-rw-r--r-- | ext/pdo_pgsql/pgsql_driver.c | 28 | ||||
-rw-r--r-- | ext/pdo_pgsql/pgsql_statement.c | 2 | ||||
-rw-r--r-- | ext/pdo_pgsql/tests/bug66584.phpt | 66 | ||||
-rw-r--r-- | ext/pdo_pgsql/tests/bug67462.phpt | 34 | ||||
-rw-r--r-- | ext/pgsql/tests/config.inc | 9 | ||||
-rw-r--r-- | ext/standard/tests/file/bug52820.phpt | 134 | ||||
-rw-r--r-- | ext/xmlrpc/libxmlrpc/xmlrpc.c | 6 | ||||
-rw-r--r-- | main/getopt.c | 8 | ||||
-rw-r--r-- | main/php_version.h | 6 | ||||
-rwxr-xr-x | run-tests.php | 5 | ||||
-rw-r--r-- | sapi/litespeed/lsapi_main.c | 4 |
20 files changed, 787 insertions, 549 deletions
diff --git a/.travis.yml b/.travis.yml index b2ed607cac..31cdcd07f5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,4 +39,4 @@ before_script: - . ./travis/ext/pdo_pgsql/setup.sh # Run PHPs run-tests.php -script: ./sapi/cli/php run-tests.php -p `pwd`/sapi/cli/php -g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP" --show-diff --set-timeout 120 +script: ./sapi/cli/php run-tests.php -p `pwd`/sapi/cli/php -g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP" --show-diff --set-timeout 120 -s @@ -1,18 +1,29 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| +?? ??? 2014, PHP 5.5.20 + + ?? ??? 2014, PHP 5.5.19 - Core: + . Fixed bug #68095 (AddressSanitizer reports a heap buffer overflow in + php_getopt()). (Stas) . Fixed bug #68118 ($a->foo .= 'test'; can leave $a->foo undefined). (Nikita) . Fixed bug #68129 (parse_url() - incomplete support for empty usernames and passwords) (Tjerk) - Fileinfo: . Fixed bug #66242 (libmagic: don't assume char is signed). (ArdB) + . Fixed bug #68283 (fileinfo: out-of-bounds read in elf note headers). + (CVE-2014-3710) (Remi) - GD: . Fixed bug #65171 (imagescale() fails without height param). (Remi) +- GMP: + . Fixed bug #63595 (GMP memory management conflicts with other libraries + using GMP). (Remi) + - Mysqli: . Fixed bug #68114 (linker error on some OS X machines with fixed width decimal support) (Keyur Govande) @@ -21,6 +32,11 @@ PHP NEWS . Fixed bug #68087 (ODBC not correctly reading DATE column when preceded by a VARCHAR column) (Keyur Govande) +- PDO_pgsql: + . Fixed bug #66584 (Segmentation fault on statement deallocation) (Matteo) + . Fixed bug #67462 (PDO_PGSQL::beginTransaction() wrongly throws exception + when not in transaction) (Matteo) + - SPL: . Fixed bug #68128 (Regression in RecursiveRegexIterator) (Tjerk) diff --git a/configure.in b/configure.in index cc5ec47ac7..b16a97e72c 100644 --- a/configure.in +++ b/configure.in @@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const char *format, ...); PHP_MAJOR_VERSION=5 PHP_MINOR_VERSION=5 -PHP_RELEASE_VERSION=19 +PHP_RELEASE_VERSION=20 PHP_EXTRA_VERSION="-dev" PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION" PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION` diff --git a/ext/curl/tests/bug68089.phpt b/ext/curl/tests/bug68089.phpt index 3bd5889709..d65441b2cc 100644 --- a/ext/curl/tests/bug68089.phpt +++ b/ext/curl/tests/bug68089.phpt @@ -13,6 +13,6 @@ var_dump(curl_setopt($ch, CURLOPT_URL, $url)); ?> Done --EXPECTF-- -Warning: curl_setopt(): Curl option contains invalid characters (\0) in %s/bug68089.php on line 4 +Warning: curl_setopt(): Curl option contains invalid characters (\0) in %s%ebug68089.php on line 4 bool(false) Done diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index 98e7b2292c..0fd9bfbe10 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -1,4 +1,4 @@ -const timelib_tzdb_index_entry timezonedb_idx_builtin[582] = { +const timelib_tzdb_index_entry timezonedb_idx_builtin[583] = { { "Africa/Abidjan" , 0x000000 }, { "Africa/Accra" , 0x000055 }, { "Africa/Addis_Ababa" , 0x00019D }, @@ -261,329 +261,330 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[582] = { { "Asia/Harbin" , 0x01B474 }, { "Asia/Hebron" , 0x01B514 }, { "Asia/Ho_Chi_Minh" , 0x01B870 }, - { "Asia/Hong_Kong" , 0x01B8E8 }, - { "Asia/Hovd" , 0x01BAAA }, - { "Asia/Irkutsk" , 0x01BC22 }, - { "Asia/Istanbul" , 0x01BE0D }, - { "Asia/Jakarta" , 0x01C1FA }, - { "Asia/Jayapura" , 0x01C2A4 }, - { "Asia/Jerusalem" , 0x01C341 }, - { "Asia/Kabul" , 0x01C670 }, - { "Asia/Kamchatka" , 0x01C6C1 }, - { "Asia/Karachi" , 0x01C8BA }, - { "Asia/Kashgar" , 0x01C96F }, - { "Asia/Kathmandu" , 0x01C9C4 }, - { "Asia/Katmandu" , 0x01CA2A }, - { "Asia/Khandyga" , 0x01CA90 }, - { "Asia/Kolkata" , 0x01CCBA }, - { "Asia/Krasnoyarsk" , 0x01CD33 }, - { "Asia/Kuala_Lumpur" , 0x01CF20 }, - { "Asia/Kuching" , 0x01CFDD }, - { "Asia/Kuwait" , 0x01D0CB }, - { "Asia/Macao" , 0x01D120 }, - { "Asia/Macau" , 0x01D25B }, - { "Asia/Magadan" , 0x01D396 }, - { "Asia/Makassar" , 0x01D59A }, - { "Asia/Manila" , 0x01D65F }, - { "Asia/Muscat" , 0x01D6E4 }, - { "Asia/Nicosia" , 0x01D739 }, - { "Asia/Novokuznetsk" , 0x01DA21 }, - { "Asia/Novosibirsk" , 0x01DC41 }, - { "Asia/Omsk" , 0x01DE31 }, - { "Asia/Oral" , 0x01E01D }, - { "Asia/Phnom_Penh" , 0x01E1ED }, - { "Asia/Pontianak" , 0x01E265 }, - { "Asia/Pyongyang" , 0x01E327 }, - { "Asia/Qatar" , 0x01E3B7 }, - { "Asia/Qyzylorda" , 0x01E41D }, - { "Asia/Rangoon" , 0x01E5F3 }, - { "Asia/Riyadh" , 0x01E66B }, - { "Asia/Saigon" , 0x01E6C0 }, - { "Asia/Sakhalin" , 0x01E738 }, - { "Asia/Samarkand" , 0x01E935 }, - { "Asia/Seoul" , 0x01EA6B }, - { "Asia/Shanghai" , 0x01EB32 }, - { "Asia/Singapore" , 0x01EBDE }, - { "Asia/Srednekolymsk" , 0x01EC95 }, - { "Asia/Taipei" , 0x01EE95 }, - { "Asia/Tashkent" , 0x01EFC6 }, - { "Asia/Tbilisi" , 0x01F0F7 }, - { "Asia/Tehran" , 0x01F2B1 }, - { "Asia/Tel_Aviv" , 0x01F51F }, - { "Asia/Thimbu" , 0x01F84E }, - { "Asia/Thimphu" , 0x01F8B4 }, - { "Asia/Tokyo" , 0x01F91A }, - { "Asia/Ujung_Pandang" , 0x01F9A4 }, - { "Asia/Ulaanbaatar" , 0x01FA21 }, - { "Asia/Ulan_Bator" , 0x01FB7C }, - { "Asia/Urumqi" , 0x01FCC9 }, - { "Asia/Ust-Nera" , 0x01FD2B }, - { "Asia/Vientiane" , 0x01FF3D }, - { "Asia/Vladivostok" , 0x01FFB5 }, - { "Asia/Yakutsk" , 0x02019F }, - { "Asia/Yekaterinburg" , 0x020389 }, - { "Asia/Yerevan" , 0x0205AA }, - { "Atlantic/Azores" , 0x0207AA }, - { "Atlantic/Bermuda" , 0x020CAD }, - { "Atlantic/Canary" , 0x020F8E }, - { "Atlantic/Cape_Verde" , 0x021264 }, - { "Atlantic/Faeroe" , 0x0212DD }, - { "Atlantic/Faroe" , 0x021581 }, - { "Atlantic/Jan_Mayen" , 0x021825 }, - { "Atlantic/Madeira" , 0x021B57 }, - { "Atlantic/Reykjavik" , 0x022060 }, - { "Atlantic/South_Georgia" , 0x022219 }, - { "Atlantic/St_Helena" , 0x02242B }, - { "Atlantic/Stanley" , 0x02225D }, - { "Australia/ACT" , 0x022480 }, - { "Australia/Adelaide" , 0x0227A3 }, - { "Australia/Brisbane" , 0x022AD5 }, - { "Australia/Broken_Hill" , 0x022BA2 }, - { "Australia/Canberra" , 0x022EE6 }, - { "Australia/Currie" , 0x023209 }, - { "Australia/Darwin" , 0x023542 }, - { "Australia/Eucla" , 0x0235CE }, - { "Australia/Hobart" , 0x0236AA }, - { "Australia/LHI" , 0x023A0E }, - { "Australia/Lindeman" , 0x023CAF }, - { "Australia/Lord_Howe" , 0x023D96 }, - { "Australia/Melbourne" , 0x024047 }, - { "Australia/North" , 0x024372 }, - { "Australia/NSW" , 0x0243EC }, - { "Australia/Perth" , 0x02470F }, - { "Australia/Queensland" , 0x0247ED }, - { "Australia/South" , 0x02489F }, - { "Australia/Sydney" , 0x024BC2 }, - { "Australia/Tasmania" , 0x024F05 }, - { "Australia/Victoria" , 0x025250 }, - { "Australia/West" , 0x025573 }, - { "Australia/Yancowinna" , 0x02562F }, - { "Brazil/Acre" , 0x025957 }, - { "Brazil/DeNoronha" , 0x025A5B }, - { "Brazil/East" , 0x025B7B }, - { "Brazil/West" , 0x025E58 }, - { "Canada/Atlantic" , 0x025F50 }, - { "Canada/Central" , 0x026438 }, - { "Canada/East-Saskatchewan" , 0x026D42 }, - { "Canada/Eastern" , 0x026852 }, - { "Canada/Mountain" , 0x026ECB }, - { "Canada/Newfoundland" , 0x027241 }, - { "Canada/Pacific" , 0x02776C }, - { "Canada/Saskatchewan" , 0x027B85 }, - { "Canada/Yukon" , 0x027D0E }, - { "CET" , 0x028011 }, - { "Chile/Continental" , 0x02831A }, - { "Chile/EasterIsland" , 0x0286B5 }, - { "CST6CDT" , 0x0289F7 }, - { "Cuba" , 0x028D48 }, - { "EET" , 0x0290BB }, - { "Egypt" , 0x02936E }, - { "Eire" , 0x029755 }, - { "EST" , 0x029C66 }, - { "EST5EDT" , 0x029CAA }, - { "Etc/GMT" , 0x029FFB }, - { "Etc/GMT+0" , 0x02A0C7 }, - { "Etc/GMT+1" , 0x02A151 }, - { "Etc/GMT+10" , 0x02A1DE }, - { "Etc/GMT+11" , 0x02A26C }, - { "Etc/GMT+12" , 0x02A2FA }, - { "Etc/GMT+2" , 0x02A415 }, - { "Etc/GMT+3" , 0x02A4A1 }, - { "Etc/GMT+4" , 0x02A52D }, - { "Etc/GMT+5" , 0x02A5B9 }, - { "Etc/GMT+6" , 0x02A645 }, - { "Etc/GMT+7" , 0x02A6D1 }, - { "Etc/GMT+8" , 0x02A75D }, - { "Etc/GMT+9" , 0x02A7E9 }, - { "Etc/GMT-0" , 0x02A083 }, - { "Etc/GMT-1" , 0x02A10B }, - { "Etc/GMT-10" , 0x02A197 }, - { "Etc/GMT-11" , 0x02A225 }, - { "Etc/GMT-12" , 0x02A2B3 }, - { "Etc/GMT-13" , 0x02A341 }, - { "Etc/GMT-14" , 0x02A388 }, - { "Etc/GMT-2" , 0x02A3CF }, - { "Etc/GMT-3" , 0x02A45B }, - { "Etc/GMT-4" , 0x02A4E7 }, - { "Etc/GMT-5" , 0x02A573 }, - { "Etc/GMT-6" , 0x02A5FF }, - { "Etc/GMT-7" , 0x02A68B }, - { "Etc/GMT-8" , 0x02A717 }, - { "Etc/GMT-9" , 0x02A7A3 }, - { "Etc/GMT0" , 0x02A03F }, - { "Etc/Greenwich" , 0x02A82F }, - { "Etc/UCT" , 0x02A873 }, - { "Etc/Universal" , 0x02A8B7 }, - { "Etc/UTC" , 0x02A8FB }, - { "Etc/Zulu" , 0x02A93F }, - { "Europe/Amsterdam" , 0x02A983 }, - { "Europe/Andorra" , 0x02ADC1 }, - { "Europe/Athens" , 0x02B03D }, - { "Europe/Belfast" , 0x02B380 }, - { "Europe/Belgrade" , 0x02B8B7 }, - { "Europe/Berlin" , 0x02BB80 }, - { "Europe/Bratislava" , 0x02BEE4 }, - { "Europe/Brussels" , 0x02C216 }, - { "Europe/Bucharest" , 0x02C64D }, - { "Europe/Budapest" , 0x02C977 }, - { "Europe/Busingen" , 0x02CCE0 }, - { "Europe/Chisinau" , 0x02CF97 }, - { "Europe/Copenhagen" , 0x02D325 }, - { "Europe/Dublin" , 0x02D62F }, - { "Europe/Gibraltar" , 0x02DB40 }, - { "Europe/Guernsey" , 0x02DF97 }, - { "Europe/Helsinki" , 0x02E4CE }, - { "Europe/Isle_of_Man" , 0x02E784 }, - { "Europe/Istanbul" , 0x02ECBB }, - { "Europe/Jersey" , 0x02F0A8 }, - { "Europe/Kaliningrad" , 0x02F5DF }, - { "Europe/Kiev" , 0x02F84A }, - { "Europe/Lisbon" , 0x02FB66 }, - { "Europe/Ljubljana" , 0x03006A }, - { "Europe/London" , 0x030333 }, - { "Europe/Luxembourg" , 0x03086A }, - { "Europe/Madrid" , 0x030CC0 }, - { "Europe/Malta" , 0x031086 }, - { "Europe/Mariehamn" , 0x03143F }, - { "Europe/Minsk" , 0x0316F5 }, - { "Europe/Monaco" , 0x031903 }, - { "Europe/Moscow" , 0x031D3E }, - { "Europe/Nicosia" , 0x031F98 }, - { "Europe/Oslo" , 0x032280 }, - { "Europe/Paris" , 0x0325B2 }, - { "Europe/Podgorica" , 0x0329F8 }, - { "Europe/Prague" , 0x032CC1 }, - { "Europe/Riga" , 0x032FF3 }, - { "Europe/Rome" , 0x033338 }, - { "Europe/Samara" , 0x0336FB }, - { "Europe/San_Marino" , 0x033964 }, - { "Europe/Sarajevo" , 0x033D27 }, - { "Europe/Simferopol" , 0x033FF0 }, - { "Europe/Skopje" , 0x034241 }, - { "Europe/Sofia" , 0x03450A }, - { "Europe/Stockholm" , 0x034812 }, - { "Europe/Tallinn" , 0x034AC1 }, - { "Europe/Tirane" , 0x034DFB }, - { "Europe/Tiraspol" , 0x035101 }, - { "Europe/Uzhgorod" , 0x03548F }, - { "Europe/Vaduz" , 0x0357A6 }, - { "Europe/Vatican" , 0x035A55 }, - { "Europe/Vienna" , 0x035E18 }, - { "Europe/Vilnius" , 0x036145 }, - { "Europe/Volgograd" , 0x036484 }, - { "Europe/Warsaw" , 0x0366A5 }, - { "Europe/Zagreb" , 0x036A86 }, - { "Europe/Zaporozhye" , 0x036D4F }, - { "Europe/Zurich" , 0x037090 }, - { "Factory" , 0x03733F }, - { "GB" , 0x0373B0 }, - { "GB-Eire" , 0x0378E7 }, - { "GMT" , 0x037E1E }, - { "GMT+0" , 0x037EEA }, - { "GMT-0" , 0x037EA6 }, - { "GMT0" , 0x037E62 }, - { "Greenwich" , 0x037F2E }, - { "Hongkong" , 0x037F72 }, - { "HST" , 0x038134 }, - { "Iceland" , 0x038178 }, - { "Indian/Antananarivo" , 0x038331 }, - { "Indian/Chagos" , 0x0383A5 }, - { "Indian/Christmas" , 0x038407 }, - { "Indian/Cocos" , 0x03844B }, - { "Indian/Comoro" , 0x03848F }, - { "Indian/Kerguelen" , 0x0384E4 }, - { "Indian/Mahe" , 0x038539 }, - { "Indian/Maldives" , 0x03858E }, - { "Indian/Mauritius" , 0x0385E3 }, - { "Indian/Mayotte" , 0x038659 }, - { "Indian/Reunion" , 0x0386AE }, - { "Iran" , 0x038703 }, - { "Israel" , 0x038971 }, - { "Jamaica" , 0x038CA0 }, - { "Japan" , 0x038D65 }, - { "Kwajalein" , 0x038DEF }, - { "Libya" , 0x038E52 }, - { "MET" , 0x038F5B }, - { "Mexico/BajaNorte" , 0x039264 }, - { "Mexico/BajaSur" , 0x0395CD }, - { "Mexico/General" , 0x039812 }, - { "MST" , 0x039A70 }, - { "MST7MDT" , 0x039AB4 }, - { "Navajo" , 0x039E05 }, - { "NZ" , 0x03A17E }, - { "NZ-CHAT" , 0x03A4FC }, - { "Pacific/Apia" , 0x03A7E0 }, - { "Pacific/Auckland" , 0x03A97C }, - { "Pacific/Chatham" , 0x03AD08 }, - { "Pacific/Chuuk" , 0x03AFFB }, - { "Pacific/Easter" , 0x03B054 }, - { "Pacific/Efate" , 0x03B3A3 }, - { "Pacific/Enderbury" , 0x03B469 }, - { "Pacific/Fakaofo" , 0x03B4D7 }, - { "Pacific/Fiji" , 0x03B528 }, - { "Pacific/Funafuti" , 0x03B6BB }, - { "Pacific/Galapagos" , 0x03B6FF }, - { "Pacific/Gambier" , 0x03B777 }, - { "Pacific/Guadalcanal" , 0x03B7DC }, - { "Pacific/Guam" , 0x03B831 }, - { "Pacific/Honolulu" , 0x03B887 }, - { "Pacific/Johnston" , 0x03B8FE }, - { "Pacific/Kiritimati" , 0x03B97D }, - { "Pacific/Kosrae" , 0x03B9E8 }, - { "Pacific/Kwajalein" , 0x03BA45 }, - { "Pacific/Majuro" , 0x03BAB1 }, - { "Pacific/Marquesas" , 0x03BB10 }, - { "Pacific/Midway" , 0x03BB77 }, - { "Pacific/Nauru" , 0x03BC01 }, - { "Pacific/Niue" , 0x03BC79 }, - { "Pacific/Norfolk" , 0x03BCD7 }, - { "Pacific/Noumea" , 0x03BD2C }, - { "Pacific/Pago_Pago" , 0x03BDBC }, - { "Pacific/Palau" , 0x03BE33 }, - { "Pacific/Pitcairn" , 0x03BE77 }, - { "Pacific/Pohnpei" , 0x03BECC }, - { "Pacific/Ponape" , 0x03BF21 }, - { "Pacific/Port_Moresby" , 0x03BF66 }, - { "Pacific/Rarotonga" , 0x03BFAA }, - { "Pacific/Saipan" , 0x03C086 }, - { "Pacific/Samoa" , 0x03C0E9 }, - { "Pacific/Tahiti" , 0x03C160 }, - { "Pacific/Tarawa" , 0x03C1C5 }, - { "Pacific/Tongatapu" , 0x03C219 }, - { "Pacific/Truk" , 0x03C2A5 }, - { "Pacific/Wake" , 0x03C2EA }, - { "Pacific/Wallis" , 0x03C33A }, - { "Pacific/Yap" , 0x03C37E }, - { "Poland" , 0x03C3C3 }, - { "Portugal" , 0x03C7A4 }, - { "PRC" , 0x03CCA0 }, - { "PST8PDT" , 0x03CD40 }, - { "ROC" , 0x03D091 }, - { "ROK" , 0x03D1C2 }, - { "Singapore" , 0x03D289 }, - { "Turkey" , 0x03D340 }, - { "UCT" , 0x03D72D }, - { "Universal" , 0x03D771 }, - { "US/Alaska" , 0x03D7B5 }, - { "US/Aleutian" , 0x03DB1E }, - { "US/Arizona" , 0x03DE84 }, - { "US/Central" , 0x03DF12 }, - { "US/East-Indiana" , 0x03E91C }, - { "US/Eastern" , 0x03E41D }, - { "US/Hawaii" , 0x03EB86 }, - { "US/Indiana-Starke" , 0x03EBF7 }, - { "US/Michigan" , 0x03EF68 }, - { "US/Mountain" , 0x03F29F }, - { "US/Pacific" , 0x03F618 }, - { "US/Pacific-New" , 0x03FA1D }, - { "US/Samoa" , 0x03FE22 }, - { "UTC" , 0x03FE99 }, - { "W-SU" , 0x040190 }, - { "WET" , 0x03FEDD }, - { "Zulu" , 0x0403D3 }, + { "Asia/Hong_Kong" , 0x01B912 }, + { "Asia/Hovd" , 0x01BAD4 }, + { "Asia/Irkutsk" , 0x01BC4C }, + { "Asia/Istanbul" , 0x01BE37 }, + { "Asia/Jakarta" , 0x01C224 }, + { "Asia/Jayapura" , 0x01C2CE }, + { "Asia/Jerusalem" , 0x01C36B }, + { "Asia/Kabul" , 0x01C69A }, + { "Asia/Kamchatka" , 0x01C6EB }, + { "Asia/Karachi" , 0x01C8E4 }, + { "Asia/Kashgar" , 0x01C999 }, + { "Asia/Kathmandu" , 0x01C9EE }, + { "Asia/Katmandu" , 0x01CA54 }, + { "Asia/Khandyga" , 0x01CABA }, + { "Asia/Kolkata" , 0x01CCE4 }, + { "Asia/Krasnoyarsk" , 0x01CD5D }, + { "Asia/Kuala_Lumpur" , 0x01CF4A }, + { "Asia/Kuching" , 0x01D007 }, + { "Asia/Kuwait" , 0x01D0F5 }, + { "Asia/Macao" , 0x01D14A }, + { "Asia/Macau" , 0x01D285 }, + { "Asia/Magadan" , 0x01D3C0 }, + { "Asia/Makassar" , 0x01D5C4 }, + { "Asia/Manila" , 0x01D689 }, + { "Asia/Muscat" , 0x01D70E }, + { "Asia/Nicosia" , 0x01D763 }, + { "Asia/Novokuznetsk" , 0x01DA4B }, + { "Asia/Novosibirsk" , 0x01DC6B }, + { "Asia/Omsk" , 0x01DE5B }, + { "Asia/Oral" , 0x01E047 }, + { "Asia/Phnom_Penh" , 0x01E217 }, + { "Asia/Pontianak" , 0x01E26C }, + { "Asia/Pyongyang" , 0x01E32E }, + { "Asia/Qatar" , 0x01E3BE }, + { "Asia/Qyzylorda" , 0x01E424 }, + { "Asia/Rangoon" , 0x01E5FA }, + { "Asia/Riyadh" , 0x01E672 }, + { "Asia/Saigon" , 0x01E6C7 }, + { "Asia/Sakhalin" , 0x01E769 }, + { "Asia/Samarkand" , 0x01E966 }, + { "Asia/Seoul" , 0x01EA9C }, + { "Asia/Shanghai" , 0x01EB63 }, + { "Asia/Singapore" , 0x01EC0F }, + { "Asia/Srednekolymsk" , 0x01ECC6 }, + { "Asia/Taipei" , 0x01EEC6 }, + { "Asia/Tashkent" , 0x01EFF7 }, + { "Asia/Tbilisi" , 0x01F128 }, + { "Asia/Tehran" , 0x01F2E2 }, + { "Asia/Tel_Aviv" , 0x01F550 }, + { "Asia/Thimbu" , 0x01F87F }, + { "Asia/Thimphu" , 0x01F8E5 }, + { "Asia/Tokyo" , 0x01F94B }, + { "Asia/Ujung_Pandang" , 0x01F9D5 }, + { "Asia/Ulaanbaatar" , 0x01FA52 }, + { "Asia/Ulan_Bator" , 0x01FBAD }, + { "Asia/Urumqi" , 0x01FCFA }, + { "Asia/Ust-Nera" , 0x01FD5C }, + { "Asia/Vientiane" , 0x01FF6E }, + { "Asia/Vladivostok" , 0x01FFC3 }, + { "Asia/Yakutsk" , 0x0201AD }, + { "Asia/Yekaterinburg" , 0x020397 }, + { "Asia/Yerevan" , 0x0205B8 }, + { "Atlantic/Azores" , 0x0207B8 }, + { "Atlantic/Bermuda" , 0x020CBB }, + { "Atlantic/Canary" , 0x020F9C }, + { "Atlantic/Cape_Verde" , 0x021272 }, + { "Atlantic/Faeroe" , 0x0212EB }, + { "Atlantic/Faroe" , 0x02158F }, + { "Atlantic/Jan_Mayen" , 0x021833 }, + { "Atlantic/Madeira" , 0x021B65 }, + { "Atlantic/Reykjavik" , 0x02206E }, + { "Atlantic/South_Georgia" , 0x022227 }, + { "Atlantic/St_Helena" , 0x022439 }, + { "Atlantic/Stanley" , 0x02226B }, + { "Australia/ACT" , 0x02248E }, + { "Australia/Adelaide" , 0x0227B1 }, + { "Australia/Brisbane" , 0x022AE3 }, + { "Australia/Broken_Hill" , 0x022BB0 }, + { "Australia/Canberra" , 0x022EF4 }, + { "Australia/Currie" , 0x023217 }, + { "Australia/Darwin" , 0x023550 }, + { "Australia/Eucla" , 0x0235DC }, + { "Australia/Hobart" , 0x0236B8 }, + { "Australia/LHI" , 0x023A1C }, + { "Australia/Lindeman" , 0x023CBD }, + { "Australia/Lord_Howe" , 0x023DA4 }, + { "Australia/Melbourne" , 0x024055 }, + { "Australia/North" , 0x024380 }, + { "Australia/NSW" , 0x0243FA }, + { "Australia/Perth" , 0x02471D }, + { "Australia/Queensland" , 0x0247FB }, + { "Australia/South" , 0x0248AD }, + { "Australia/Sydney" , 0x024BD0 }, + { "Australia/Tasmania" , 0x024F13 }, + { "Australia/Victoria" , 0x02525E }, + { "Australia/West" , 0x025581 }, + { "Australia/Yancowinna" , 0x02563D }, + { "Brazil/Acre" , 0x025965 }, + { "Brazil/DeNoronha" , 0x025A69 }, + { "Brazil/East" , 0x025B89 }, + { "Brazil/West" , 0x025E66 }, + { "Canada/Atlantic" , 0x025F5E }, + { "Canada/Central" , 0x026446 }, + { "Canada/East-Saskatchewan" , 0x026D50 }, + { "Canada/Eastern" , 0x026860 }, + { "Canada/Mountain" , 0x026ED9 }, + { "Canada/Newfoundland" , 0x02724F }, + { "Canada/Pacific" , 0x02777A }, + { "Canada/Saskatchewan" , 0x027B93 }, + { "Canada/Yukon" , 0x027D1C }, + { "CET" , 0x02801F }, + { "Chile/Continental" , 0x028328 }, + { "Chile/EasterIsland" , 0x0286C3 }, + { "CST6CDT" , 0x028A05 }, + { "Cuba" , 0x028D56 }, + { "EET" , 0x0290C9 }, + { "Egypt" , 0x02937C }, + { "Eire" , 0x029763 }, + { "EST" , 0x029C74 }, + { "EST5EDT" , 0x029CB8 }, + { "Etc/GMT" , 0x02A009 }, + { "Etc/GMT+0" , 0x02A0D5 }, + { "Etc/GMT+1" , 0x02A15F }, + { "Etc/GMT+10" , 0x02A1EC }, + { "Etc/GMT+11" , 0x02A27A }, + { "Etc/GMT+12" , 0x02A308 }, + { "Etc/GMT+2" , 0x02A423 }, + { "Etc/GMT+3" , 0x02A4AF }, + { "Etc/GMT+4" , 0x02A53B }, + { "Etc/GMT+5" , 0x02A5C7 }, + { "Etc/GMT+6" , 0x02A653 }, + { "Etc/GMT+7" , 0x02A6DF }, + { "Etc/GMT+8" , 0x02A76B }, + { "Etc/GMT+9" , 0x02A7F7 }, + { "Etc/GMT-0" , 0x02A091 }, + { "Etc/GMT-1" , 0x02A119 }, + { "Etc/GMT-10" , 0x02A1A5 }, + { "Etc/GMT-11" , 0x02A233 }, + { "Etc/GMT-12" , 0x02A2C1 }, + { "Etc/GMT-13" , 0x02A34F }, + { "Etc/GMT-14" , 0x02A396 }, + { "Etc/GMT-2" , 0x02A3DD }, + { "Etc/GMT-3" , 0x02A469 }, + { "Etc/GMT-4" , 0x02A4F5 }, + { "Etc/GMT-5" , 0x02A581 }, + { "Etc/GMT-6" , 0x02A60D }, + { "Etc/GMT-7" , 0x02A699 }, + { "Etc/GMT-8" , 0x02A725 }, + { "Etc/GMT-9" , 0x02A7B1 }, + { "Etc/GMT0" , 0x02A04D }, + { "Etc/Greenwich" , 0x02A83D }, + { "Etc/UCT" , 0x02A881 }, + { "Etc/Universal" , 0x02A8C5 }, + { "Etc/UTC" , 0x02A909 }, + { "Etc/Zulu" , 0x02A94D }, + { "Europe/Amsterdam" , 0x02A991 }, + { "Europe/Andorra" , 0x02ADCF }, + { "Europe/Athens" , 0x02B04B }, + { "Europe/Belfast" , 0x02B38E }, + { "Europe/Belgrade" , 0x02B8C5 }, + { "Europe/Berlin" , 0x02BB8E }, + { "Europe/Bratislava" , 0x02BEF2 }, + { "Europe/Brussels" , 0x02C224 }, + { "Europe/Bucharest" , 0x02C65B }, + { "Europe/Budapest" , 0x02C985 }, + { "Europe/Busingen" , 0x02CCEE }, + { "Europe/Chisinau" , 0x02CFA5 }, + { "Europe/Copenhagen" , 0x02D333 }, + { "Europe/Dublin" , 0x02D63D }, + { "Europe/Gibraltar" , 0x02DB4E }, + { "Europe/Guernsey" , 0x02DFA5 }, + { "Europe/Helsinki" , 0x02E4DC }, + { "Europe/Isle_of_Man" , 0x02E792 }, + { "Europe/Istanbul" , 0x02ECC9 }, + { "Europe/Jersey" , 0x02F0B6 }, + { "Europe/Kaliningrad" , 0x02F5ED }, + { "Europe/Kiev" , 0x02F858 }, + { "Europe/Lisbon" , 0x02FB74 }, + { "Europe/Ljubljana" , 0x030078 }, + { "Europe/London" , 0x030341 }, + { "Europe/Luxembourg" , 0x030878 }, + { "Europe/Madrid" , 0x030CCE }, + { "Europe/Malta" , 0x031094 }, + { "Europe/Mariehamn" , 0x03144D }, + { "Europe/Minsk" , 0x031703 }, + { "Europe/Monaco" , 0x031916 }, + { "Europe/Moscow" , 0x031D51 }, + { "Europe/Nicosia" , 0x031FAB }, + { "Europe/Oslo" , 0x032293 }, + { "Europe/Paris" , 0x0325C5 }, + { "Europe/Podgorica" , 0x032A0B }, + { "Europe/Prague" , 0x032CD4 }, + { "Europe/Riga" , 0x033006 }, + { "Europe/Rome" , 0x03334B }, + { "Europe/Samara" , 0x03370E }, + { "Europe/San_Marino" , 0x033977 }, + { "Europe/Sarajevo" , 0x033D3A }, + { "Europe/Simferopol" , 0x034003 }, + { "Europe/Skopje" , 0x034254 }, + { "Europe/Sofia" , 0x03451D }, + { "Europe/Stockholm" , 0x034825 }, + { "Europe/Tallinn" , 0x034AD4 }, + { "Europe/Tirane" , 0x034E0E }, + { "Europe/Tiraspol" , 0x035114 }, + { "Europe/Uzhgorod" , 0x0354A2 }, + { "Europe/Vaduz" , 0x0357B9 }, + { "Europe/Vatican" , 0x035A68 }, + { "Europe/Vienna" , 0x035E2B }, + { "Europe/Vilnius" , 0x036158 }, + { "Europe/Volgograd" , 0x036497 }, + { "Europe/Warsaw" , 0x0366B8 }, + { "Europe/Zagreb" , 0x036A99 }, + { "Europe/Zaporozhye" , 0x036D62 }, + { "Europe/Zurich" , 0x0370A3 }, + { "Factory" , 0x037352 }, + { "GB" , 0x0373C3 }, + { "GB-Eire" , 0x0378FA }, + { "GMT" , 0x037E31 }, + { "GMT+0" , 0x037EFD }, + { "GMT-0" , 0x037EB9 }, + { "GMT0" , 0x037E75 }, + { "Greenwich" , 0x037F41 }, + { "Hongkong" , 0x037F85 }, + { "HST" , 0x038147 }, + { "Iceland" , 0x03818B }, + { "Indian/Antananarivo" , 0x038344 }, + { "Indian/Chagos" , 0x0383B8 }, + { "Indian/Christmas" , 0x03841A }, + { "Indian/Cocos" , 0x03845E }, + { "Indian/Comoro" , 0x0384A2 }, + { "Indian/Kerguelen" , 0x0384F7 }, + { "Indian/Mahe" , 0x03854C }, + { "Indian/Maldives" , 0x0385A1 }, + { "Indian/Mauritius" , 0x0385F6 }, + { "Indian/Mayotte" , 0x03866C }, + { "Indian/Reunion" , 0x0386C1 }, + { "Iran" , 0x038716 }, + { "Israel" , 0x038984 }, + { "Jamaica" , 0x038CB3 }, + { "Japan" , 0x038D78 }, + { "Kwajalein" , 0x038E02 }, + { "Libya" , 0x038E65 }, + { "MET" , 0x038F6E }, + { "Mexico/BajaNorte" , 0x039277 }, + { "Mexico/BajaSur" , 0x0395E0 }, + { "Mexico/General" , 0x039825 }, + { "MST" , 0x039A83 }, + { "MST7MDT" , 0x039AC7 }, + { "Navajo" , 0x039E18 }, + { "NZ" , 0x03A191 }, + { "NZ-CHAT" , 0x03A50F }, + { "Pacific/Apia" , 0x03A7F3 }, + { "Pacific/Auckland" , 0x03A98F }, + { "Pacific/Bougainville" , 0x03AD1B }, + { "Pacific/Chatham" , 0x03AD92 }, + { "Pacific/Chuuk" , 0x03B085 }, + { "Pacific/Easter" , 0x03B0DE }, + { "Pacific/Efate" , 0x03B42D }, + { "Pacific/Enderbury" , 0x03B4F3 }, + { "Pacific/Fakaofo" , 0x03B561 }, + { "Pacific/Fiji" , 0x03B5B2 }, + { "Pacific/Funafuti" , 0x03B745 }, + { "Pacific/Galapagos" , 0x03B789 }, + { "Pacific/Gambier" , 0x03B801 }, + { "Pacific/Guadalcanal" , 0x03B866 }, + { "Pacific/Guam" , 0x03B8BB }, + { "Pacific/Honolulu" , 0x03B911 }, + { "Pacific/Johnston" , 0x03B988 }, + { "Pacific/Kiritimati" , 0x03BA07 }, + { "Pacific/Kosrae" , 0x03BA72 }, + { "Pacific/Kwajalein" , 0x03BACF }, + { "Pacific/Majuro" , 0x03BB3B }, + { "Pacific/Marquesas" , 0x03BB9A }, + { "Pacific/Midway" , 0x03BC01 }, + { "Pacific/Nauru" , 0x03BC8B }, + { "Pacific/Niue" , 0x03BD03 }, + { "Pacific/Norfolk" , 0x03BD61 }, + { "Pacific/Noumea" , 0x03BDB6 }, + { "Pacific/Pago_Pago" , 0x03BE46 }, + { "Pacific/Palau" , 0x03BEBD }, + { "Pacific/Pitcairn" , 0x03BF01 }, + { "Pacific/Pohnpei" , 0x03BF56 }, + { "Pacific/Ponape" , 0x03BFAB }, + { "Pacific/Port_Moresby" , 0x03BFF0 }, + { "Pacific/Rarotonga" , 0x03C042 }, + { "Pacific/Saipan" , 0x03C11E }, + { "Pacific/Samoa" , 0x03C181 }, + { "Pacific/Tahiti" , 0x03C1F8 }, + { "Pacific/Tarawa" , 0x03C25D }, + { "Pacific/Tongatapu" , 0x03C2B1 }, + { "Pacific/Truk" , 0x03C33D }, + { "Pacific/Wake" , 0x03C382 }, + { "Pacific/Wallis" , 0x03C3D2 }, + { "Pacific/Yap" , 0x03C416 }, + { "Poland" , 0x03C45B }, + { "Portugal" , 0x03C83C }, + { "PRC" , 0x03CD38 }, + { "PST8PDT" , 0x03CDD8 }, + { "ROC" , 0x03D129 }, + { "ROK" , 0x03D25A }, + { "Singapore" , 0x03D321 }, + { "Turkey" , 0x03D3D8 }, + { "UCT" , 0x03D7C5 }, + { "Universal" , 0x03D809 }, + { "US/Alaska" , 0x03D84D }, + { "US/Aleutian" , 0x03DBB6 }, + { "US/Arizona" , 0x03DF1C }, + { "US/Central" , 0x03DFAA }, + { "US/East-Indiana" , 0x03E9B4 }, + { "US/Eastern" , 0x03E4B5 }, + { "US/Hawaii" , 0x03EC1E }, + { "US/Indiana-Starke" , 0x03EC8F }, + { "US/Michigan" , 0x03F000 }, + { "US/Mountain" , 0x03F337 }, + { "US/Pacific" , 0x03F6B0 }, + { "US/Pacific-New" , 0x03FAB5 }, + { "US/Samoa" , 0x03FEBA }, + { "UTC" , 0x03FF31 }, + { "W-SU" , 0x040228 }, + { "WET" , 0x03FF75 }, + { "Zulu" , 0x04046B }, }; /* This is a generated file, do not modify */ -const unsigned char timelib_timezone_db_data_builtin[263191] = { +const unsigned char timelib_timezone_db_data_builtin[263343] = { /* Africa/Abidjan */ @@ -8304,13 +8305,16 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 0x4E, 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, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x88, 0x6F, 0x42, 0x80, -0x91, 0x5F, 0xEE, 0xD0, 0x93, 0x85, 0xB1, 0x90, 0xB7, 0x41, 0xBC, 0x00, 0x01, 0x02, 0x03, 0x02, -0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, -0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xBB, 0x78, -0x01, 0xB5, 0x6B, 0x2A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x43, 0x80, +0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, +0xD5, 0x32, 0xBB, 0x10, 0xE4, 0xB6, 0xE4, 0x80, 0xED, 0x2F, 0x98, 0x00, 0x0A, 0x3D, 0xC7, 0x00, +0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, +0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, +0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, +0x49, 0x43, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xBB, 0x78, 0x01, 0xB5, 0x6B, 0x2A, 0x00, 0x00, +0x00, 0x00, /* Asia/Hong_Kong */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x48, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9046,13 +9050,11 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { /* Asia/Phnom_Penh */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x48, 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, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x88, 0x6F, 0x44, 0x24, -0x91, 0x5F, 0xEE, 0xD0, 0x93, 0x85, 0xB1, 0x90, 0xB7, 0x41, 0xBC, 0x00, 0x01, 0x02, 0x03, 0x02, -0x00, 0x00, 0x62, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, -0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xF3, 0xF8, -0x01, 0xB2, 0xBF, 0x92, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA2, 0x6A, 0x67, 0xC4, +0x01, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x42, 0x4D, 0x54, +0x00, 0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xF3, 0xF8, 0x01, 0xB2, 0xBF, +0x92, 0x00, 0x00, 0x00, 0x00, /* Asia/Pontianak */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9142,13 +9144,16 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { /* Asia/Saigon */ 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, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x88, 0x6F, 0x42, 0x80, -0x91, 0x5F, 0xEE, 0xD0, 0x93, 0x85, 0xB1, 0x90, 0xB7, 0x41, 0xBC, 0x00, 0x01, 0x02, 0x03, 0x02, -0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, -0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, -0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x43, 0x80, +0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, +0xD5, 0x32, 0xBB, 0x10, 0xE4, 0xB6, 0xE4, 0x80, 0xED, 0x2F, 0x98, 0x00, 0x0A, 0x3D, 0xC7, 0x00, +0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, +0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, +0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, +0x49, 0x43, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Asia/Sakhalin */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9584,13 +9589,11 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { /* Asia/Vientiane */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x41, 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, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x88, 0x6F, 0x46, 0x50, -0x91, 0x5F, 0xEE, 0xD0, 0x93, 0x85, 0xB1, 0x90, 0xB7, 0x41, 0xBC, 0x00, 0x01, 0x02, 0x03, 0x02, -0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, -0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xBE, 0x7A, -0x01, 0xAF, 0x36, 0xA0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA2, 0x6A, 0x67, 0xC4, +0x01, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x42, 0x4D, 0x54, +0x00, 0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xBE, 0x7A, 0x01, 0xAF, 0x36, +0xA0, 0x00, 0x00, 0x00, 0x00, /* Asia/Vladivostok */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -14391,7 +14394,7 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { /* Europe/Minsk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x22, 0xAA, 0x19, 0xAA, 0x38, +0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x22, 0xAA, 0x19, 0xAA, 0x38, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0x5E, 0x70, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x0A, 0x02, 0x60, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -14408,20 +14411,21 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { 0x40, 0x66, 0x15, 0x80, 0x41, 0x84, 0x2B, 0x00, 0x42, 0x45, 0xF7, 0x80, 0x43, 0x64, 0x0D, 0x00, 0x44, 0x25, 0xD9, 0x80, 0x45, 0x43, 0xEF, 0x00, 0x46, 0x05, 0xBB, 0x80, 0x47, 0x23, 0xD1, 0x00, 0x47, 0xEE, 0xD8, 0x00, 0x49, 0x03, 0xB3, 0x00, 0x49, 0xCE, 0xBA, 0x00, 0x4A, 0xE3, 0x95, 0x00, -0x4B, 0xAE, 0x9C, 0x00, 0x4C, 0xCC, 0xB1, 0x80, 0x4D, 0x8E, 0x7E, 0x00, 0x01, 0x02, 0x05, 0x03, -0x04, 0x03, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x07, 0x08, 0x07, 0x08, 0x07, -0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x02, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, +0x4B, 0xAE, 0x9C, 0x00, 0x4C, 0xCC, 0xB1, 0x80, 0x4D, 0x8E, 0x7E, 0x00, 0x54, 0x4C, 0x1D, 0x60, +0x01, 0x02, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x07, +0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x02, 0x09, 0x0A, 0x09, 0x0A, 0x09, +0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, -0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x0B, -0x00, 0x00, 0x19, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, -0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, -0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, -0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x1E, 0x4D, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, -0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, -0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x46, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xDB, 0x92, 0xF0, 0x01, 0x3C, 0xB8, 0xBA, 0x00, 0x00, 0x00, 0x00, +0x0A, 0x09, 0x0A, 0x0B, 0x07, 0x00, 0x00, 0x19, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, +0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, +0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00, +0x00, 0x2A, 0x30, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x1E, 0x4D, 0x4D, 0x54, +0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, +0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x46, 0x45, 0x54, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x92, 0xF0, 0x01, 0x3C, 0xB8, 0xBA, 0x00, +0x00, 0x00, 0x00, /* Europe/Monaco */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16966,6 +16970,16 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { 0x00, 0x00, 0x00, 0x51, 0x13, 0x35, 0x02, 0x1D, 0x54, 0xBA, 0x00, 0x00, 0x00, 0x0E, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, +/* Pacific/Bougainville */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xCC, 0x43, 0x36, 0x60, +0xD2, 0x2B, 0x6C, 0xF0, 0x54, 0x9E, 0xD7, 0x80, 0x01, 0x00, 0x02, 0x00, 0x00, 0x8C, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x08, 0x50, 0x47, 0x54, +0x00, 0x4A, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x7F, 0xD7, 0xDD, 0x02, 0x00, 0x08, 0xBA, 0x00, 0x00, 0x00, 0x0C, 0x42, 0x6F, 0x75, 0x67, 0x61, +0x69, 0x6E, 0x76, 0x69, 0x6C, 0x6C, 0x65, + /* Pacific/Chatham */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x5A, 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, @@ -17118,19 +17132,19 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { 0x36, 0x3B, 0x17, 0xE0, 0x36, 0xD7, 0xFA, 0x60, 0x38, 0x24, 0x34, 0x60, 0x38, 0xB7, 0xDC, 0x60, 0x4B, 0x11, 0x2C, 0xE0, 0x4B, 0xAE, 0x0F, 0x60, 0x4C, 0xC2, 0xEA, 0x60, 0x4D, 0x72, 0x41, 0xE0, 0x4E, 0xA2, 0xCC, 0x60, 0x4F, 0x1A, 0xC4, 0xE0, 0x50, 0x82, 0xAE, 0x60, 0x50, 0xFA, 0xA6, 0xE0, -0x52, 0x6B, 0xCA, 0xE0, 0x52, 0xDA, 0x7A, 0xD0, 0x54, 0x4B, 0xAC, 0xE0, 0x54, 0xBA, 0x5C, 0xD0, -0x56, 0x2B, 0x8E, 0xE0, 0x56, 0xA3, 0x79, 0x50, 0x58, 0x0B, 0x70, 0xE0, 0x58, 0x83, 0x5B, 0x50, -0x59, 0xEB, 0x52, 0xE0, 0x5A, 0x63, 0x3D, 0x50, 0x5B, 0xCB, 0x34, 0xE0, 0x5C, 0x43, 0x1F, 0x50, -0x5D, 0xB4, 0x51, 0x60, 0x5E, 0x23, 0x01, 0x50, 0x5F, 0x94, 0x33, 0x60, 0x60, 0x0C, 0x1D, 0xD0, -0x61, 0x74, 0x15, 0x60, 0x61, 0xEB, 0xFF, 0xD0, 0x63, 0x53, 0xF7, 0x60, 0x63, 0xCB, 0xE1, 0xD0, -0x65, 0x33, 0xD9, 0x60, 0x65, 0xAB, 0xC3, 0xD0, 0x67, 0x1C, 0xF5, 0xE0, 0x67, 0x8B, 0xA5, 0xD0, -0x68, 0xFC, 0xD7, 0xE0, 0x69, 0x6B, 0x87, 0xD0, 0x6A, 0xDC, 0xB9, 0xE0, 0x6B, 0x54, 0xA4, 0x50, -0x6C, 0xBC, 0x9B, 0xE0, 0x6D, 0x34, 0x86, 0x50, 0x6E, 0x9C, 0x7D, 0xE0, 0x6F, 0x14, 0x68, 0x50, -0x70, 0x7C, 0x5F, 0xE0, 0x70, 0xF4, 0x4A, 0x50, 0x72, 0x65, 0x7C, 0x60, 0x72, 0xD4, 0x2C, 0x50, -0x74, 0x45, 0x5E, 0x60, 0x74, 0xB4, 0x0E, 0x50, 0x76, 0x25, 0x40, 0x60, 0x76, 0x9D, 0x2A, 0xD0, -0x78, 0x05, 0x22, 0x60, 0x78, 0x7D, 0x0C, 0xD0, 0x79, 0xE5, 0x04, 0x60, 0x7A, 0x5C, 0xEE, 0xD0, -0x7B, 0xC4, 0xE6, 0x60, 0x7C, 0x3C, 0xD0, 0xD0, 0x7D, 0xAE, 0x02, 0xE0, 0x7E, 0x1C, 0xB2, 0xD0, -0x7F, 0x8D, 0xE4, 0xE0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x52, 0x6B, 0xCA, 0xE0, 0x52, 0xDA, 0x7A, 0xD0, 0x54, 0x54, 0xE7, 0x60, 0x54, 0xBA, 0x6A, 0xE0, +0x56, 0x34, 0xC9, 0x60, 0x56, 0xA3, 0x87, 0x60, 0x58, 0x1D, 0xE5, 0xE0, 0x58, 0x83, 0x69, 0x60, +0x59, 0xFD, 0xC7, 0xE0, 0x5A, 0x63, 0x4B, 0x60, 0x5B, 0xDD, 0xA9, 0xE0, 0x5C, 0x43, 0x2D, 0x60, +0x5D, 0xBD, 0x8B, 0xE0, 0x5E, 0x23, 0x0F, 0x60, 0x5F, 0x9D, 0x6D, 0xE0, 0x60, 0x0C, 0x2B, 0xE0, +0x61, 0x86, 0x8A, 0x60, 0x61, 0xEC, 0x0D, 0xE0, 0x63, 0x66, 0x6C, 0x60, 0x63, 0xCB, 0xEF, 0xE0, +0x65, 0x46, 0x4E, 0x60, 0x65, 0xAB, 0xD1, 0xE0, 0x67, 0x26, 0x30, 0x60, 0x67, 0x8B, 0xB3, 0xE0, +0x69, 0x06, 0x12, 0x60, 0x69, 0x6B, 0x95, 0xE0, 0x6A, 0xE5, 0xF4, 0x60, 0x6B, 0x54, 0xB2, 0x60, +0x6C, 0xCF, 0x10, 0xE0, 0x6D, 0x34, 0x94, 0x60, 0x6E, 0xAE, 0xF2, 0xE0, 0x6F, 0x14, 0x76, 0x60, +0x70, 0x8E, 0xD4, 0xE0, 0x70, 0xF4, 0x58, 0x60, 0x72, 0x6E, 0xB6, 0xE0, 0x72, 0xD4, 0x3A, 0x60, +0x74, 0x4E, 0x98, 0xE0, 0x74, 0xB4, 0x1C, 0x60, 0x76, 0x37, 0xB5, 0x60, 0x76, 0x9D, 0x38, 0xE0, +0x78, 0x17, 0x97, 0x60, 0x78, 0x7D, 0x1A, 0xE0, 0x79, 0xF7, 0x79, 0x60, 0x7A, 0x5C, 0xFC, 0xE0, +0x7B, 0xD7, 0x5B, 0x60, 0x7C, 0x3C, 0xDE, 0xE0, 0x7D, 0xB7, 0x3D, 0x60, 0x7E, 0x1C, 0xC0, 0xE0, +0x7F, 0x97, 0x1F, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, @@ -17338,7 +17352,8 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x50, 0x47, 0x54, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xD5, 0x50, 0x01, 0xF3, 0x37, 0x7A, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0E, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, +0x6E, 0x73, /* Pacific/Rarotonga */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18532,4 +18547,4 @@ const unsigned char timelib_timezone_db_data_builtin[263191] = { 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.8", 582, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2014.9", 583, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch index a91a658397..14409852bf 100644 --- a/ext/fileinfo/libmagic.patch +++ b/ext/fileinfo/libmagic.patch @@ -1,6 +1,6 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c --- libmagic.orig/apprentice.c Thu Mar 21 18:45:14 2013 -+++ libmagic/apprentice.c Mon Apr 14 23:42:51 2014 ++++ libmagic/apprentice.c Mon Sep 29 10:53:07 2014 @@ -29,6 +29,8 @@ * apprentice - make one pass through /etc/magic, learning its secrets. */ @@ -479,6 +479,15 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c return NULL; } return map; +@@ -1233,7 +1269,7 @@ + * the sign extension must have happened. + */ + case FILE_BYTE: +- v = (char) v; ++ v = (signed char) v; + break; + case FILE_SHORT: + case FILE_BESHORT: @@ -1500,7 +1536,7 @@ if (me->cont_count == me->max_count) { struct magic *nm; @@ -833,7 +842,7 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c } diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c --- libmagic.orig/ascmagic.c Wed Oct 31 18:03:01 2012 -+++ libmagic/ascmagic.c Mon Apr 14 23:42:51 2014 ++++ libmagic/ascmagic.c Mon Mar 10 16:40:55 2014 @@ -139,7 +139,7 @@ /* malloc size is a conservative overestimate; could be improved, or at least realloced after conversion. */ @@ -872,7 +881,7 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c } diff -u libmagic.orig/cdf.c libmagic/cdf.c --- libmagic.orig/cdf.c Thu Mar 21 18:45:14 2013 -+++ libmagic/cdf.c Tue Jul 1 09:00:09 2014 ++++ libmagic/cdf.c Wed Aug 20 21:20:34 2014 @@ -43,7 +43,17 @@ #include <err.h> #endif @@ -955,7 +964,7 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c errno = EFTYPE; return (size_t)-1; } -@@ -796,7 +812,11 @@ +@@ -796,11 +812,15 @@ if (cdf_check_stream_offset(sst, h, e, 0, __LINE__) == -1) goto out; for (i = 0; i < sh.sh_properties; i++) { @@ -968,6 +977,11 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c q = (const uint8_t *)(const void *) ((const char *)(const void *)p + ofs - 2 * sizeof(uint32_t)); +- if (q > e) { ++ if (q < p || q > e) { + DPRINTF(("Ran of the end %p > %p\n", q, e)); + goto out; + } @@ -810,6 +830,10 @@ i, inp[i].pi_id, inp[i].pi_type, q - p, offs)); if (inp[i].pi_type & CDF_VECTOR) { @@ -1056,7 +1070,7 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c } else { diff -u libmagic.orig/cdf.h libmagic/cdf.h --- libmagic.orig/cdf.h Wed Oct 31 18:03:01 2012 -+++ libmagic/cdf.h Mon Apr 14 23:32:55 2014 ++++ libmagic/cdf.h Mon Dec 2 15:25:29 2013 @@ -35,10 +35,12 @@ #ifndef _H_CDF_ #define _H_CDF_ @@ -1099,7 +1113,7 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h void cdf_unpack_header(cdf_header_t *, char *); diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c --- libmagic.orig/cdf_time.c Wed Oct 31 18:03:01 2012 -+++ libmagic/cdf_time.c Mon Apr 14 23:32:55 2014 ++++ libmagic/cdf_time.c Mon Dec 2 15:25:29 2013 @@ -96,7 +96,7 @@ } @@ -1159,7 +1173,7 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c static const char *ref = "Sat Apr 23 01:30:00 1977"; diff -u libmagic.orig/compress.c libmagic/compress.c --- libmagic.orig/compress.c Sun Jan 6 21:35:43 2013 -+++ libmagic/compress.c Mon Apr 14 23:42:51 2014 ++++ libmagic/compress.c Mon Dec 2 15:25:29 2013 @@ -32,6 +32,7 @@ * uncompress(method, old, n, newch) - uncompress old into new, * using method, return sizeof new @@ -1322,7 +1336,7 @@ diff -u libmagic.orig/compress.c libmagic/compress.c +#endif /* if PHP_FILEINFO_UNCOMPRESS */ diff -u libmagic.orig/file.h libmagic/file.h --- libmagic.orig/file.h Mon Feb 18 16:40:59 2013 -+++ libmagic/file.h Mon Apr 14 23:42:51 2014 ++++ libmagic/file.h Mon Mar 10 16:40:55 2014 @@ -33,11 +33,9 @@ #ifndef __file_h__ #define __file_h__ @@ -1532,7 +1546,7 @@ diff -u libmagic.orig/file.h libmagic/file.h #endif /* __file_h__ */ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c --- libmagic.orig/fsmagic.c Thu Mar 21 18:45:14 2013 -+++ libmagic/fsmagic.c Mon Apr 14 23:42:51 2014 ++++ libmagic/fsmagic.c Mon Dec 2 15:25:29 2013 @@ -59,27 +59,21 @@ # define minor(dev) ((dev) & 0xff) #endif @@ -1899,7 +1913,7 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c } diff -u libmagic.orig/funcs.c libmagic/funcs.c --- libmagic.orig/funcs.c Wed Oct 31 18:03:01 2012 -+++ libmagic/funcs.c Mon Apr 14 23:42:51 2014 ++++ libmagic/funcs.c Mon Mar 10 16:40:55 2014 @@ -41,52 +41,42 @@ #if defined(HAVE_WCTYPE_H) #include <wctype.h> @@ -2193,7 +2207,7 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c + diff -u libmagic.orig/magic.c libmagic/magic.c --- libmagic.orig/magic.c Fri Jan 11 17:43:09 2013 -+++ libmagic/magic.c Mon Apr 14 23:42:51 2014 ++++ libmagic/magic.c Mon Dec 2 15:29:02 2013 @@ -25,11 +25,6 @@ * SUCH DAMAGE. */ @@ -2537,7 +2551,7 @@ diff -u libmagic.orig/magic.c libmagic/magic.c magic_error(struct magic_set *ms) diff -u libmagic.orig/magic.h libmagic/magic.h --- libmagic.orig/magic.h Thu Mar 21 18:52:42 2013 -+++ libmagic/magic.h Mon Apr 14 23:42:51 2014 ++++ libmagic/magic.h Mon Dec 2 15:25:29 2013 @@ -87,6 +87,7 @@ const char *magic_getpath(const char *, int); @@ -2556,14 +2570,14 @@ diff -u libmagic.orig/magic.h libmagic/magic.h diff -u libmagic.orig/print.c libmagic/print.c --- libmagic.orig/print.c Thu Mar 21 18:45:14 2013 -+++ libmagic/print.c Mon Apr 14 23:42:51 2014 -@@ -29,12 +29,17 @@ ++++ libmagic/print.c Mon Dec 2 15:29:02 2013 +@@ -28,13 +28,17 @@ + /* * print.c - debugging printout routines */ - +#define _GNU_SOURCE +#include "php.h" -+ + #include "file.h" +#include "cdf.h" @@ -2575,7 +2589,7 @@ diff -u libmagic.orig/print.c libmagic/print.c #include <string.h> #include <stdarg.h> #include <stdlib.h> -@@ -43,188 +48,28 @@ +@@ -43,188 +47,28 @@ #endif #include <time.h> @@ -2776,7 +2790,7 @@ diff -u libmagic.orig/print.c libmagic/print.c } protected const char * -@@ -235,7 +80,7 @@ +@@ -235,7 +79,7 @@ struct tm *tm; if (flags & FILE_T_WINDOWS) { @@ -2787,7 +2801,7 @@ diff -u libmagic.orig/print.c libmagic/print.c } diff -u libmagic.orig/readcdf.c libmagic/readcdf.c --- libmagic.orig/readcdf.c Wed Oct 31 18:03:01 2012 -+++ libmagic/readcdf.c Tue May 27 22:17:37 2014 ++++ libmagic/readcdf.c Thu Apr 24 19:54:40 2014 @@ -30,7 +30,11 @@ #endif @@ -2863,7 +2877,7 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c return -1; diff -u libmagic.orig/readelf.c libmagic/readelf.c --- libmagic.orig/readelf.c Thu Mar 21 18:45:14 2013 -+++ libmagic/readelf.c Mon Apr 14 23:42:51 2014 ++++ libmagic/readelf.c Sat Oct 25 11:50:05 2014 @@ -48,8 +48,8 @@ private int dophn_exec(struct magic_set *, int, int, int, off_t, int, size_t, off_t, int *, int); @@ -2956,7 +2970,21 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c file_badread(ms); return -1; } -@@ -852,24 +867,12 @@ +@@ -357,6 +372,13 @@ + uint32_t namesz, descsz; + unsigned char *nbuf = CAST(unsigned char *, vbuf); + ++ if (xnh_sizeof + offset > size) { ++ /* ++ * We're out of note headers. ++ */ ++ return xnh_sizeof + offset; ++ } ++ + (void)memcpy(xnh_addr, &nbuf[offset], xnh_sizeof); + offset += xnh_sizeof; + +@@ -852,24 +874,12 @@ return 0; } @@ -2984,7 +3012,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c file_badread(ms); return -1; } -@@ -894,14 +897,17 @@ +@@ -894,14 +904,17 @@ /* Things we can determine when we seek */ switch (xsh_type) { case SHT_NOTE: @@ -3007,7 +3035,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c return -1; } -@@ -910,25 +916,16 @@ +@@ -910,25 +923,16 @@ if (noff >= (off_t)xsh_size) break; noff = donote(ms, nbuf, (size_t)noff, @@ -3038,7 +3066,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c file_badseek(ms); return -1; } -@@ -940,7 +937,7 @@ +@@ -940,7 +944,7 @@ MAX(sizeof cap32, sizeof cap64)]; if ((coff += xcap_sizeof) > (off_t)xsh_size) break; @@ -3047,7 +3075,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c (ssize_t)xcap_sizeof) { file_badread(ms); return -1; -@@ -966,13 +963,12 @@ +@@ -966,13 +970,12 @@ break; } } @@ -3063,7 +3091,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c if (file_printf(ms, ", %sstripped", stripped ? "" : "not ") == -1) return -1; if (cap_hw1) { -@@ -1051,7 +1047,7 @@ +@@ -1051,7 +1054,7 @@ const char *shared_libraries = ""; unsigned char nbuf[BUFSIZ]; ssize_t bufsize; @@ -3072,7 +3100,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c if (size != xph_sizeof) { if (file_printf(ms, ", corrupted program header size") == -1) -@@ -1060,8 +1056,13 @@ +@@ -1060,8 +1063,13 @@ } for ( ; num; num--) { @@ -3088,7 +3116,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c return -1; } -@@ -1099,9 +1100,12 @@ +@@ -1099,9 +1107,12 @@ * This is a PT_NOTE section; loop through all the notes * in the section. */ @@ -3104,7 +3132,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c if (bufsize == -1) { file_badread(ms); return -1; -@@ -1162,7 +1166,7 @@ +@@ -1162,7 +1173,7 @@ /* * If we cannot seek, it must be a pipe, socket or fifo. */ @@ -3115,7 +3143,7 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c if (fstat(fd, &st) == -1) { diff -u libmagic.orig/readelf.h libmagic/readelf.h --- libmagic.orig/readelf.h Thu Mar 21 18:45:14 2013 -+++ libmagic/readelf.h Mon Apr 14 23:42:51 2014 ++++ libmagic/readelf.h Mon Dec 2 15:25:29 2013 @@ -44,9 +44,17 @@ typedef uint32_t Elf32_Word; typedef uint8_t Elf32_Char; @@ -3136,7 +3164,7 @@ diff -u libmagic.orig/readelf.h libmagic/readelf.h typedef uint8_t Elf64_Char; diff -u libmagic.orig/softmagic.c libmagic/softmagic.c --- libmagic.orig/softmagic.c Thu Mar 21 18:45:14 2013 -+++ libmagic/softmagic.c Tue Jul 1 09:00:09 2014 ++++ libmagic/softmagic.c Wed Aug 20 21:20:34 2014 @@ -41,6 +41,11 @@ #include <stdlib.h> #include <time.h> @@ -3149,6 +3177,15 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c private int match(struct magic_set *, struct magic *, uint32_t, const unsigned char *, size_t, size_t, int, int, int, int, int *, int *, +@@ -53,7 +58,7 @@ + private int32_t moffset(struct magic_set *, struct magic *); + private void mdebug(uint32_t, const char *, size_t); + private int mcopy(struct magic_set *, union VALUETYPE *, int, int, +- const unsigned char *, uint32_t, size_t, size_t); ++ const unsigned char *, uint32_t, size_t, struct magic *); + private int mconvert(struct magic_set *, struct magic *, int); + private int print_sep(struct magic_set *, int); + private int handle_annotation(struct magic_set *, struct magic *); @@ -62,6 +67,8 @@ private void cvt_32(union VALUETYPE *, const struct magic *); private void cvt_64(union VALUETYPE *, const struct magic *); @@ -3308,9 +3345,72 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c while (len--) *ptr1++ = *ptr2++; *ptr1 = '\0'; -@@ -1145,9 +1138,6 @@ - "nbytes=%zu, count=%u)\n", m->type, m->flag, offset, o, - nbytes, count); +@@ -1010,7 +1003,7 @@ + + private int + mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir, +- const unsigned char *s, uint32_t offset, size_t nbytes, size_t linecnt) ++ const unsigned char *s, uint32_t offset, size_t nbytes, struct magic *m) + { + /* + * Note: FILE_SEARCH and FILE_REGEX do not actually copy +@@ -1030,15 +1023,24 @@ + const char *last; /* end of search region */ + const char *buf; /* start of search region */ + const char *end; +- size_t lines; ++ size_t lines, linecnt, bytecnt; ++ ++ linecnt = m->str_range; ++ bytecnt = linecnt * 80; + ++ if (bytecnt == 0) { ++ bytecnt = 8192; ++ } ++ if (bytecnt > nbytes) { ++ bytecnt = nbytes; ++ } + if (s == NULL) { + ms->search.s_len = 0; + ms->search.s = NULL; + return 0; + } + buf = RCAST(const char *, s) + offset; +- end = last = RCAST(const char *, s) + nbytes; ++ end = last = RCAST(const char *, s) + bytecnt; + /* mget() guarantees buf <= last */ + for (lines = linecnt, b = buf; lines && b < end && + ((b = CAST(const char *, +@@ -1051,7 +1053,7 @@ + b++; + } + if (lines) +- last = RCAST(const char *, s) + nbytes; ++ last = RCAST(const char *, s) + bytecnt; + + ms->search.s = buf; + ms->search.s_len = last - buf; +@@ -1125,7 +1127,6 @@ + int *need_separator, int *returnval) + { + uint32_t soffset, offset = ms->offset; +- uint32_t count = m->str_range; + int rv, oneed_separator; + char *sbuf, *rbuf; + union VALUETYPE *p = &ms->ms_value; +@@ -1137,17 +1138,13 @@ + } + + if (mcopy(ms, p, m->type, m->flag & INDIR, s, (uint32_t)(offset + o), +- (uint32_t)nbytes, count) == -1) ++ (uint32_t)nbytes, m) == -1) + return -1; + + if ((ms->flags & MAGIC_DEBUG) != 0) { + fprintf(stderr, "mget(type=%d, flag=%x, offset=%u, o=%zu, " +- "nbytes=%zu, count=%u)\n", m->type, m->flag, offset, o, +- nbytes, count); ++ "nbytes=%zu)\n", m->type, m->flag, offset, o, nbytes); mdebug(offset, (char *)(void *)p, sizeof(union VALUETYPE)); -#ifndef COMPILE_ONLY - file_mdump(m); @@ -3318,7 +3418,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c } if (m->flag & INDIR) { -@@ -1191,7 +1181,7 @@ +@@ -1191,7 +1188,7 @@ } switch (cvt_flip(m->in_type, flip)) { case FILE_BYTE: @@ -3327,7 +3427,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { -@@ -1226,7 +1216,7 @@ +@@ -1226,7 +1223,7 @@ offset = ~offset; break; case FILE_BESHORT: @@ -3336,7 +3436,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { -@@ -1278,7 +1268,7 @@ +@@ -1278,7 +1275,7 @@ offset = ~offset; break; case FILE_LESHORT: @@ -3345,7 +3445,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { -@@ -1330,7 +1320,7 @@ +@@ -1330,7 +1327,7 @@ offset = ~offset; break; case FILE_SHORT: @@ -3354,7 +3454,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { -@@ -1367,7 +1357,7 @@ +@@ -1367,7 +1364,7 @@ break; case FILE_BELONG: case FILE_BEID3: @@ -3363,7 +3463,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { -@@ -1438,7 +1428,7 @@ +@@ -1438,7 +1435,7 @@ break; case FILE_LELONG: case FILE_LEID3: @@ -3372,7 +3472,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { -@@ -1508,7 +1498,7 @@ +@@ -1508,7 +1505,7 @@ offset = ~offset; break; case FILE_MELONG: @@ -3381,7 +3481,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { -@@ -1578,7 +1568,7 @@ +@@ -1578,7 +1575,7 @@ offset = ~offset; break; case FILE_LONG: @@ -3390,7 +3490,15 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { -@@ -1644,23 +1634,20 @@ +@@ -1637,30 +1634,27 @@ + if ((ms->flags & MAGIC_DEBUG) != 0) + fprintf(stderr, "indirect +offs=%u\n", offset); + } +- if (mcopy(ms, p, m->type, 0, s, offset, nbytes, count) == -1) ++ if (mcopy(ms, p, m->type, 0, s, offset, nbytes, m) == -1) + return -1; + ms->offset = offset; + if ((ms->flags & MAGIC_DEBUG) != 0) { mdebug(offset, (char *)(void *)p, sizeof(union VALUETYPE)); @@ -3416,7 +3524,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; break; -@@ -1679,38 +1666,40 @@ +@@ -1679,38 +1673,40 @@ case FILE_FLOAT: case FILE_BEFLOAT: case FILE_LEFLOAT: @@ -3463,7 +3571,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c if ((ms->flags & MAGIC_DEBUG) != 0) fprintf(stderr, "indirect @offs=%u[%d]\n", offset, rv); rbuf = ms->o.buf; -@@ -1718,16 +1707,26 @@ +@@ -1718,16 +1714,26 @@ ms->offset = soffset; if (rv == 1) { if ((ms->flags & (MAGIC_MIME|MAGIC_APPLE)) == 0 && @@ -3494,7 +3602,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c return 0; sbuf = m->value.s; if (*sbuf == '^') { -@@ -1837,6 +1836,42 @@ +@@ -1837,6 +1843,42 @@ return file_strncmp(a, b, len, flags); } @@ -3537,7 +3645,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c private int magiccheck(struct magic_set *ms, struct magic *m) { -@@ -1996,69 +2031,157 @@ +@@ -1996,69 +2038,157 @@ break; } case FILE_REGEX: { @@ -3608,7 +3716,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c + zval *retval; + zval *subpats; + char *haystack; -+ ++ + MAKE_STD_ZVAL(retval); + ALLOC_INIT_ZVAL(subpats); + diff --git a/ext/fileinfo/libmagic/readelf.c b/ext/fileinfo/libmagic/readelf.c index 1c3845fc6b..bb6f70fb8b 100644 --- a/ext/fileinfo/libmagic/readelf.c +++ b/ext/fileinfo/libmagic/readelf.c @@ -372,6 +372,13 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size, uint32_t namesz, descsz; unsigned char *nbuf = CAST(unsigned char *, vbuf); + if (xnh_sizeof + offset > size) { + /* + * We're out of note headers. + */ + return xnh_sizeof + offset; + } + (void)memcpy(xnh_addr, &nbuf[offset], xnh_sizeof); offset += xnh_sizeof; diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c index f51bd8c59c..b1553fa16f 100644 --- a/ext/gmp/gmp.c +++ b/ext/gmp/gmp.c @@ -324,30 +324,6 @@ static void _php_gmpnum_free(zend_rsrc_list_entry *rsrc TSRMLS_DC); # define MAX_BASE 36 #endif -/* {{{ gmp_emalloc - */ -static void *gmp_emalloc(size_t size) -{ - return emalloc(size); -} -/* }}} */ - -/* {{{ gmp_erealloc - */ -static void *gmp_erealloc(void *ptr, size_t old_size, size_t new_size) -{ - return erealloc(ptr, new_size); -} -/* }}} */ - -/* {{{ gmp_efree - */ -static void gmp_efree(void *ptr, size_t size) -{ - efree(ptr); -} -/* }}} */ - /* {{{ ZEND_GINIT_FUNCTION */ static ZEND_GINIT_FUNCTION(gmp) @@ -369,8 +345,6 @@ ZEND_MODULE_STARTUP_D(gmp) #endif REGISTER_STRING_CONSTANT("GMP_VERSION", (char *)gmp_version, CONST_CS | CONST_PERSISTENT); - mp_set_memory_functions(gmp_emalloc, gmp_erealloc, gmp_efree); - return SUCCESS; } /* }}} */ diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 196ada0266..e2dd7ca759 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -640,7 +640,7 @@ PHPAPI void php_pcre_match_impl(pcre_cache_entry *pce, char *subject, int subjec } offsets = (int *)safe_emalloc(size_offsets, sizeof(int), 0); - + memset(offsets, 0, size_offsets*sizeof(int)); /* Allocate match sets array and initialize the values. */ if (global && subpats && subpats_order == PREG_PATTERN_ORDER) { match_sets = (zval **)safe_emalloc(num_subpats, sizeof(zval *), 0); diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 3be9359216..17757a7b2d 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -465,6 +465,15 @@ static int pdo_pgsql_check_liveness(pdo_dbh_t *dbh TSRMLS_DC) } /* }}} */ +static int pgsql_handle_in_transaction(pdo_dbh_t *dbh TSRMLS_DC) +{ + pdo_pgsql_db_handle *H; + + H = (pdo_pgsql_db_handle *)dbh->driver_data; + + return PQtransactionStatus(H->server) > PQTRANS_IDLE; +} + static int pdo_pgsql_transaction_cmd(const char *cmd, pdo_dbh_t *dbh TSRMLS_DC) { pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; @@ -489,7 +498,15 @@ static int pgsql_handle_begin(pdo_dbh_t *dbh TSRMLS_DC) static int pgsql_handle_commit(pdo_dbh_t *dbh TSRMLS_DC) { - return pdo_pgsql_transaction_cmd("COMMIT", dbh TSRMLS_CC); + int ret = pdo_pgsql_transaction_cmd("COMMIT", dbh TSRMLS_CC); + + /* When deferred constraints are used the commit could + fail, and a ROLLBACK implicitly ran. See bug #67462 */ + if (!ret) { + dbh->in_txn = pgsql_handle_in_transaction(dbh TSRMLS_CC); + } + + return ret; } static int pgsql_handle_rollback(pdo_dbh_t *dbh TSRMLS_DC) @@ -497,15 +514,6 @@ static int pgsql_handle_rollback(pdo_dbh_t *dbh TSRMLS_DC) return pdo_pgsql_transaction_cmd("ROLLBACK", dbh TSRMLS_CC); } -static int pgsql_handle_in_transaction(pdo_dbh_t *dbh TSRMLS_DC) -{ - pdo_pgsql_db_handle *H; - - H = (pdo_pgsql_db_handle *)dbh->driver_data; - - return PQtransactionStatus(H->server); -} - /* {{{ proto string PDO::pgsqlCopyFromArray(string $table_name , array $rows [, string $delimiter [, string $null_as ] [, string $fields]) Returns true if the copy worked fine or false if error */ static PHP_METHOD(PDO, pgsqlCopyFromArray) diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index ea5a67633e..1fa7ce4777 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -294,7 +294,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * sizeof(Oid)); } if (param->paramno >= 0) { - if (param->paramno > zend_hash_num_elements(stmt->bound_param_map)) { + if (param->paramno >= zend_hash_num_elements(stmt->bound_param_map)) { pdo_pgsql_error_stmt(stmt, PGRES_FATAL_ERROR, "HY105"); return 0; } diff --git a/ext/pdo_pgsql/tests/bug66584.phpt b/ext/pdo_pgsql/tests/bug66584.phpt new file mode 100644 index 0000000000..07742bca79 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug66584.phpt @@ -0,0 +1,66 @@ +--TEST-- +PDO PgSQL Bug #66584 (Segmentation fault on statement deallocation) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); + +$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + +$pdo->beginTransaction(); + +$pdo->query("CREATE TABLE b66584 (a int)"); +$pdo->query("INSERT INTO b66584 VALUES (165)"); + +for ($i = 1; $i >= 0; $i--) { + $pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, (bool)$i); + + try { + run($pdo, [0 => 1, 2 => 165, 5 => 3]); + } catch (\Exception $e) { + var_dump($e->getMessage()); + } + + try { + run($pdo, json_decode('{"0":234,"1":165,"2":221,"3":207,"4":188,"5":216,"6":1150,"7":916,"8":967,"9":987,"10":951,"11":990,"12":959,"13":896,"14":947,"15":877,"16":1000,"17":1023,"18":904,"19":856,"20":860,"21":866,"22":930,"23":974,"24":1032,"25":1016,"26":1050,"27":1059,"28":1040,"29":1064,"30":1004,"31":214,"32":189,"33":166,"34":1002,"35":167,"36":191,"37":859,"38":204,"39":181,"40":1001,"42":208,"43":198,"44":177,"45":1003,"46":858,"47":190,"48":162,"49":210,"50":171,"51":197,"52":168,"53":194,"54":209,"55":200,"56":192,"57":180,"58":232,"59":222,"60":163,"61":196,"62":217,"64":176,"65":193,"66":172,"67":195,"68":170,"69":173,"70":233,"71":223,"72":218,"73":186,"74":175,"75":224,"76":205,"77":211,"78":235,"79":1101,"80":225,"81":236,"82":1102,"83":1164,"84":1083,"85":1005,"86":861,"87":1179,"88":960,"89":991,"90":1187,"91":880,"92":1149,"93":1033,"94":931,"95":1006,"96":862,"97":1151,"98":917,"99":881,"100":1148,"101":1065,"102":867,"103":952,"104":1152,"105":918,"106":961,"107":1180,"108":992,"109":1188,"110":932,"111":933,"112":968,"113":868,"114":882,"115":1147,"116":1017,"117":1131,"118":1174,"119":1178,"120":1186,"121":869,"122":1051,"123":934,"124":969,"125":975,"126":1066,"127":237,"128":953,"129":1024,"130":1146,"131":883,"132":1145,"133":884,"134":885,"135":1144,"136":886,"137":1143,"138":1025,"139":897,"140":898,"141":899,"142":1026,"143":1142,"144":887,"145":1141,"146":888,"147":889,"148":1140,"149":1189,"150":993,"151":1139,"152":890,"153":1138,"154":891,"155":900,"156":892,"157":1137,"158":1027,"159":901,"160":1136,"161":893,"162":870,"163":1052,"164":954,"165":1041,"166":1018,"167":1165,"168":1084,"169":962,"170":1181,"171":994,"172":1190,"173":1042,"174":935,"175":226,"176":871,"177":1191,"178":995,"179":977,"180":948,"181":1175,"182":1053,"183":955,"184":1182,"185":963,"186":1067,"187":919,"188":1153,"189":920,"190":1154,"191":1055,"192":1054,"193":1056,"194":863,"195":872,"196":1028,"197":921,"198":1155,"199":936,"200":970,"201":1019,"202":1166,"203":1085,"204":1135,"205":894,"206":1034,"207":905,"208":873,"209":937,"210":902,"211":1029,"212":1007,"213":864,"214":1043,"215":1057,"216":956,"217":957,"218":939,"219":1086,"220":1167,"221":1087,"222":1168,"223":1173,"224":1108,"225":978,"226":1044,"227":1183,"228":964,"229":965,"230":1184,"231":1045,"232":874,"233":940,"234":1046,"235":979,"236":903,"237":980,"238":1156,"239":922,"240":1035,"241":906,"242":971,"243":972,"244":878,"245":1134,"246":879,"247":1133,"248":907,"249":1036,"250":908,"251":1132,"252":895,"253":909,"254":1060,"255":981,"256":1068,"257":996,"258":1192,"259":941,"260":865,"261":1008,"262":910,"263":997,"264":1193,"265":982,"266":942,"267":1020,"268":983,"269":1061,"270":949,"271":1176,"272":875,"273":911,"274":1069,"275":1157,"276":923,"277":1158,"278":924,"279":988,"280":984,"281":925,"282":1159,"283":1062,"284":1047,"285":1194,"286":998,"287":1021,"288":1030,"289":1031,"290":1070,"291":1088,"292":1169,"293":958,"294":1195,"295":999,"296":966,"297":1185,"298":944,"299":945,"300":1022,"301":1103,"302":220,"303":1099,"304":1048,"305":927,"306":1161,"307":989,"308":973,"309":1071,"310":1074,"311":1072,"312":1073,"313":912,"314":1037,"315":913,"316":914,"317":1177,"318":950,"319":1049,"320":876,"321":985,"322":915,"323":1038,"324":946,"325":1089,"326":1170,"327":1090,"328":1171,"329":1091,"330":1172,"331":1063,"332":986,"333":928,"334":1162,"335":929,"336":1163,"337":976,"338":231,"339":201,"340":1098,"341":215}', true)); + } catch (\Exception $e) { + var_dump($e->getMessage()); + } +} + +try { + $pdo->query("DROP TABLE b66584"); + $pdo->rollback(); +} catch (\Exception $e) { +} + +function run($pdo, $data) +{ + $bind = join(', ', array_fill(0, count($data), '?')); + + $stmt = $pdo->prepare("SELECT COUNT(*) FROM b66584 WHERE a IN ({$bind})"); + + var_dump(count($data)); + + $stmt->execute($data); + + var_dump($stmt->fetchColumn()); +} + +?> +--EXPECTF-- +int(3) +string(%d) "SQLSTATE%s" +int(340) +string(%d) "SQLSTATE%s" +int(3) +string(%d) "SQLSTATE%s" +int(340) +string(%d) "SQLSTATE%s" diff --git a/ext/pdo_pgsql/tests/bug67462.phpt b/ext/pdo_pgsql/tests/bug67462.phpt new file mode 100644 index 0000000000..888b19c248 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug67462.phpt @@ -0,0 +1,34 @@ +--TEST-- +PDO PgSQL Bug #67462 (PDO_PGSQL::beginTransaction() wrongly throws exception when not in transaction) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php + +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); +$pdo->setAttribute (\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + +$pdo->beginTransaction(); + +try { + $pdo->query("CREATE TABLE b67462 (a int NOT NULL PRIMARY KEY DEFERRABLE INITIALLY DEFERRED)"); + $pdo->query("INSERT INTO b67462 VALUES (1), (1)"); + + var_dump($pdo->inTransaction()); + $pdo->commit(); // This should fail! +} catch (\Exception $e) { + var_dump($pdo->inTransaction()); + var_dump($pdo->beginTransaction()); +} + +?> +--EXPECT-- +bool(true) +bool(false) +bool(true) diff --git a/ext/pgsql/tests/config.inc b/ext/pgsql/tests/config.inc index d4bbb33824..224d055087 100644 --- a/ext/pgsql/tests/config.inc +++ b/ext/pgsql/tests/config.inc @@ -1,12 +1,15 @@ <?php + // These vars are used to connect db and create test table. -// values can be set to meet your environment +// values can be set to meet your environment with the +// environment var PGSQL_TEST_CONNSTR + +$conn_str = getenv('PGSQL_TEST_CONNSTR') ?: "host=localhost dbname=test port=5432"; // connection string -$conn_str = "host=localhost dbname=test port=5432"; // connection string $table_name = "php_pgsql_test"; // test table that should be exist $num_test_record = 1000; // Number of records to create $table_def = "CREATE TABLE php_pgsql_test (num int, str text, bin bytea);"; // Test table $field_name = "num"; // For pg_field_num() -?>
\ No newline at end of file +?> diff --git a/ext/standard/tests/file/bug52820.phpt b/ext/standard/tests/file/bug52820.phpt index 3a9f9c31a4..a00ebf50b6 100644 --- a/ext/standard/tests/file/bug52820.phpt +++ b/ext/standard/tests/file/bug52820.phpt @@ -1,71 +1,63 @@ ---TEST--
-Bug #52820 (writes to fopencookie FILE* not committed when seeking the stream)
---SKIPIF--
-<?php
-if (!function_exists('leak_variable'))
- die("skip only for debug builds");
-/* unfortunately no standard function does a cast to FILE*, so we need
- * curl to test this */
-if (!extension_loaded("curl")) exit("skip curl extension not loaded");
-$handle=curl_init('http://127.0.0.1:37349/');
-curl_setopt($handle, CURLOPT_VERBOSE, true);
-curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
-if (!curl_setopt($handle, CURLOPT_STDERR, fopen("php://memory", "w+")))
- die("skip fopencookie not supported on this platform");
---FILE--
-<?php
-function do_stuff($url) {
- $handle=curl_init('http://127.0.0.1:37349/');
- curl_setopt($handle, CURLOPT_VERBOSE, true);
- curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($handle, CURLOPT_STDERR, $o = fopen($url, "w+"));
- curl_exec($handle);
- echo "About to rewind!\n";
- rewind($o);
- echo stream_get_contents($o);
- return $o;
-}
-
-echo "temp stream (close after):\n";
-fclose(do_stuff("php://temp"));
-
-echo "\nmemory stream (close after):\n";
-fclose(do_stuff("php://memory"));
-
-echo "\ntemp stream (leak):\n";
-leak_variable(do_stuff("php://temp"), true);
-
-echo "\nmemory stream (leak):\n";
-leak_variable(do_stuff("php://memory"), true);
-
-echo "\nDone.\n";
---EXPECTF--
-temp stream (close after):
-About to rewind!
-* About to connect() to 127.0.0.1 port 37349%r.*%r
-* Trying 127.0.0.1...%A* Connection refused
-* couldn't connect to host%S
-* Closing connection #0
-
-memory stream (close after):
-About to rewind!
-* About to connect() to 127.0.0.1 port 37349%r.*%r
-* Trying 127.0.0.1...%A* Connection refused
-* couldn't connect to host%S
-* Closing connection #0
-
-temp stream (leak):
-About to rewind!
-* About to connect() to 127.0.0.1 port 37349%r.*%r
-* Trying 127.0.0.1...%A* Connection refused
-* couldn't connect to host%S
-* Closing connection #0
-
-memory stream (leak):
-About to rewind!
-* About to connect() to 127.0.0.1 port 37349%r.*%r
-* Trying 127.0.0.1...%A* Connection refused
-* couldn't connect to host%S
-* Closing connection #0
-
-Done.
+--TEST-- +Bug #52820 (writes to fopencookie FILE* not committed when seeking the stream) +--SKIPIF-- +<?php +if (!function_exists('leak_variable')) + die("skip only for debug builds"); +/* unfortunately no standard function does a cast to FILE*, so we need + * curl to test this */ +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +$handle=curl_init('http://127.0.0.1:37349/'); +curl_setopt($handle, CURLOPT_VERBOSE, true); +curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); +if (!curl_setopt($handle, CURLOPT_STDERR, fopen("php://memory", "w+"))) + die("skip fopencookie not supported on this platform"); +--FILE-- +<?php +function do_stuff($url) { + $handle=curl_init('http://127.0.0.1:37349/'); + curl_setopt($handle, CURLOPT_VERBOSE, true); + curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); + curl_setopt($handle, CURLOPT_STDERR, $o = fopen($url, "w+")); + curl_exec($handle); + echo "About to rewind!\n"; + rewind($o); + echo stream_get_contents($o); + return $o; +} + +echo "temp stream (close after):\n"; +fclose(do_stuff("php://temp")); + +echo "\nmemory stream (close after):\n"; +fclose(do_stuff("php://memory")); + +echo "\ntemp stream (leak):\n"; +leak_variable(do_stuff("php://temp"), true); + +echo "\nmemory stream (leak):\n"; +leak_variable(do_stuff("php://memory"), true); + +echo "\nDone.\n"; +--EXPECTF-- +temp stream (close after): +About to rewind! +* %ATrying 127.0.0.1...%AConnection refused%A +* Closing connection%A%d + +memory stream (close after): +About to rewind! +* %ATrying 127.0.0.1...%AConnection refused%A +* Closing connection%A%d + +temp stream (leak): +About to rewind! +* %ATrying 127.0.0.1...%AConnection refused%A +* Closing connection%A%d + +memory stream (leak): +About to rewind! +* %ATrying 127.0.0.1...%AConnection refused%A +* Closing connection%A%d + +Done. diff --git a/ext/xmlrpc/libxmlrpc/xmlrpc.c b/ext/xmlrpc/libxmlrpc/xmlrpc.c index b766a5495a..f184cf49ee 100644 --- a/ext/xmlrpc/libxmlrpc/xmlrpc.c +++ b/ext/xmlrpc/libxmlrpc/xmlrpc.c @@ -201,9 +201,13 @@ static int date_from_ISO8601 (const char *text, time_t * value) { } p++; } - text = buf; + *p2 = 0; + text = buf; } + if (strlen(text)<17) { + return -1; + } tm.tm_isdst = -1; diff --git a/main/getopt.c b/main/getopt.c index a31a6c75d5..258173fc22 100644 --- a/main/getopt.c +++ b/main/getopt.c @@ -59,9 +59,17 @@ PHPAPI int php_getopt(int argc, char* const *argv, const opt_struct opts[], char { static int optchr = 0; static int dash = 0; /* have already seen the - */ + static char **prev_optarg = NULL; php_optidx = -1; + if(prev_optarg && prev_optarg != optarg) { + /* reset the state */ + optchr = 0; + dash = 0; + } + prev_optarg = optarg; + if (*optind >= argc) { return(EOF); } diff --git a/main/php_version.h b/main/php_version.h index b198ad69b1..3e5d9d8b3e 100644 --- a/main/php_version.h +++ b/main/php_version.h @@ -2,7 +2,7 @@ /* edit configure.in to change version number */ #define PHP_MAJOR_VERSION 5 #define PHP_MINOR_VERSION 5 -#define PHP_RELEASE_VERSION 19 +#define PHP_RELEASE_VERSION 20 #define PHP_EXTRA_VERSION "-dev" -#define PHP_VERSION "5.5.19-dev" -#define PHP_VERSION_ID 50519 +#define PHP_VERSION "5.5.20-dev" +#define PHP_VERSION_ID 50520 diff --git a/run-tests.php b/run-tests.php index cc20febf71..5563385ddf 100755 --- a/run-tests.php +++ b/run-tests.php @@ -2714,7 +2714,7 @@ function junit_mark_test_as($type, $file_name, $test_name, $time = null, $messag if (is_array($type)) { $output_type = $type[0] . 'ED'; - $temp = array_intersect(array('XFAIL', 'FAIL'), $type); + $temp = array_intersect(array('XFAIL', 'FAIL', 'WARN'), $type); $type = reset($temp); } else { $output_type = $type . 'ED'; @@ -2728,6 +2728,9 @@ function junit_mark_test_as($type, $file_name, $test_name, $time = null, $messag } elseif ('SKIP' == $type) { junit_suite_record($suite, 'test_skip'); $JUNIT['files'][$file_name]['xml'] .= "<skipped>$escaped_message</skipped>\n"; + } elseif ('WARN' == $type) { + junit_suite_record($suite, 'test_warn'); + $JUNIT['files'][$file_name]['xml'] .= "<warning>$escaped_message</warning>\n"; } elseif('FAIL' == $type) { junit_suite_record($suite, 'test_fail'); $JUNIT['files'][$file_name]['xml'] .= "<failure type='$output_type' message='$escaped_message'>$escaped_details</failure>\n"; diff --git a/sapi/litespeed/lsapi_main.c b/sapi/litespeed/lsapi_main.c index 425d638f9e..6bdf9b7d0c 100644 --- a/sapi/litespeed/lsapi_main.c +++ b/sapi/litespeed/lsapi_main.c @@ -478,8 +478,8 @@ static int init_request_info( TSRMLS_D ) SG(request_info).content_length = LSAPI_GetReqBodyLen(); SG(request_info).path_translated = estrdup( LSAPI_GetScriptFileName()); - /* It is not reset by zend engine, set it to 0. */ - SG(sapi_headers).http_response_code = 0; + /* It is not reset by zend engine, set it to 200. */ + SG(sapi_headers).http_response_code = 200; pAuth = LSAPI_GetHeader( H_AUTHORIZATION ); php_handle_auth_data(pAuth TSRMLS_CC); |