diff options
Diffstat (limited to 'ext')
77 files changed, 1294 insertions, 853 deletions
diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c index dffa9770c..77ceb88b7 100644 --- a/ext/date/lib/parse_date.c +++ b/ext/date/lib/parse_date.c @@ -3,7 +3,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re index bbae79441..277935abe 100644 --- a/ext/date/lib/parse_date.re +++ b/ext/date/lib/parse_date.re @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/date/lib/parse_iso_intervals.re b/ext/date/lib/parse_iso_intervals.re index cbbf8781b..8c82cfc3b 100644 --- a/ext/date/lib/parse_iso_intervals.re +++ b/ext/date/lib/parse_iso_intervals.re @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index da6749c51..c270eeb80 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" , 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 }, + { "Africa/Casablanca" , 0x00099C }, + { "Africa/Ceuta" , 0x000BFE }, + { "Africa/Conakry" , 0x000F05 }, + { "Africa/Dakar" , 0x000F70 }, + { "Africa/Dar_es_Salaam" , 0x000FD6 }, + { "Africa/Djibouti" , 0x001043 }, + { "Africa/Douala" , 0x001098 }, + { "Africa/El_Aaiun" , 0x0010ED }, + { "Africa/Freetown" , 0x001318 }, + { "Africa/Gaborone" , 0x001427 }, + { "Africa/Harare" , 0x001494 }, + { "Africa/Johannesburg" , 0x0014E9 }, + { "Africa/Juba" , 0x001557 }, + { "Africa/Kampala" , 0x00166A }, + { "Africa/Khartoum" , 0x0016E9 }, + { "Africa/Kigali" , 0x0017FC }, + { "Africa/Kinshasa" , 0x001851 }, + { "Africa/Lagos" , 0x0018AC }, + { "Africa/Libreville" , 0x001901 }, + { "Africa/Lome" , 0x001956 }, + { "Africa/Luanda" , 0x00199A }, + { "Africa/Lubumbashi" , 0x0019EF }, + { "Africa/Lusaka" , 0x001A4A }, + { "Africa/Malabo" , 0x001A9F }, + { "Africa/Maputo" , 0x001B05 }, + { "Africa/Maseru" , 0x001B5A }, + { "Africa/Mbabane" , 0x001BC2 }, + { "Africa/Mogadishu" , 0x001C18 }, + { "Africa/Monrovia" , 0x001C73 }, + { "Africa/Nairobi" , 0x001CD9 }, + { "Africa/Ndjamena" , 0x001D58 }, + { "Africa/Niamey" , 0x001DC4 }, + { "Africa/Nouakchott" , 0x001E37 }, + { "Africa/Ouagadougou" , 0x001EA2 }, + { "Africa/Porto-Novo" , 0x001EF7 }, + { "Africa/Sao_Tome" , 0x001F5D }, + { "Africa/Timbuktu" , 0x001FB2 }, + { "Africa/Tripoli" , 0x00201D }, + { "Africa/Tunis" , 0x002126 }, + { "Africa/Windhoek" , 0x002238 }, + { "America/Adak" , 0x00247F }, + { "America/Anchorage" , 0x0027F5 }, + { "America/Anguilla" , 0x002B69 }, + { "America/Antigua" , 0x002BBE }, + { "America/Araguaina" , 0x002C24 }, + { "America/Argentina/Buenos_Aires" , 0x002D89 }, + { "America/Argentina/Catamarca" , 0x002F37 }, + { "America/Argentina/ComodRivadavia" , 0x0030F8 }, + { "America/Argentina/Cordoba" , 0x00329E }, + { "America/Argentina/Jujuy" , 0x003473 }, + { "America/Argentina/La_Rioja" , 0x003627 }, + { "America/Argentina/Mendoza" , 0x0037DF }, + { "America/Argentina/Rio_Gallegos" , 0x00399F }, + { "America/Argentina/Salta" , 0x003B54 }, + { "America/Argentina/San_Juan" , 0x003D00 }, + { "America/Argentina/San_Luis" , 0x003EB8 }, + { "America/Argentina/Tucuman" , 0x00407E }, + { "America/Argentina/Ushuaia" , 0x00423A }, + { "America/Aruba" , 0x0043F5 }, + { "America/Asuncion" , 0x00445B }, + { "America/Atikokan" , 0x004740 }, + { "America/Atka" , 0x004816 }, + { "America/Bahia" , 0x004B7C }, + { "America/Bahia_Banderas" , 0x004D0F }, + { "America/Barbados" , 0x004F88 }, + { "America/Belem" , 0x005022 }, + { "America/Belize" , 0x00511D }, + { "America/Blanc-Sablon" , 0x005299 }, + { "America/Boa_Vista" , 0x00534D }, + { "America/Bogota" , 0x005456 }, + { "America/Boise" , 0x0054C2 }, + { "America/Buenos_Aires" , 0x005859 }, + { "America/Cambridge_Bay" , 0x0059F2 }, + { "America/Campo_Grande" , 0x005D1A }, + { "America/Cancun" , 0x006009 }, + { "America/Caracas" , 0x00624B }, + { "America/Catamarca" , 0x0062B2 }, + { "America/Cayenne" , 0x006458 }, + { "America/Cayman" , 0x0064BA }, + { "America/Chicago" , 0x00650F }, + { "America/Chihuahua" , 0x006A26 }, + { "America/Coral_Harbour" , 0x006C91 }, + { "America/Cordoba" , 0x006D23 }, + { "America/Costa_Rica" , 0x006EC9 }, + { "America/Creston" , 0x006F53 }, + { "America/Cuiaba" , 0x006FDF }, + { "America/Curacao" , 0x0072BD }, + { "America/Danmarkshavn" , 0x007323 }, + { "America/Dawson" , 0x007467 }, + { "America/Dawson_Creek" , 0x007784 }, + { "America/Denver" , 0x00795E }, + { "America/Detroit" , 0x007CE4 }, + { "America/Dominica" , 0x008043 }, + { "America/Edmonton" , 0x008098 }, + { "America/Eirunepe" , 0x008450 }, + { "America/El_Salvador" , 0x008568 }, + { "America/Ensenada" , 0x0085DD }, + { "America/Fort_Wayne" , 0x008A84 }, + { "America/Fortaleza" , 0x008946 }, + { "America/Glace_Bay" , 0x008CEE }, + { "America/Godthab" , 0x009065 }, + { "America/Goose_Bay" , 0x009329 }, + { "America/Grand_Turk" , 0x0097E6 }, + { "America/Grenada" , 0x009A95 }, + { "America/Guadeloupe" , 0x009AEA }, + { "America/Guatemala" , 0x009B3F }, + { "America/Guayaquil" , 0x009BC8 }, + { "America/Guyana" , 0x009C25 }, + { "America/Halifax" , 0x009CA6 }, + { "America/Havana" , 0x00A1BC }, + { "America/Hermosillo" , 0x00A52F }, + { "America/Indiana/Indianapolis" , 0x00A60D }, + { "America/Indiana/Knox" , 0x00A89E }, + { "America/Indiana/Marengo" , 0x00AC35 }, + { "America/Indiana/Petersburg" , 0x00AEDB }, + { "America/Indiana/Tell_City" , 0x00B428 }, + { "America/Indiana/Vevay" , 0x00B6C1 }, + { "America/Indiana/Vincennes" , 0x00B8FC }, + { "America/Indiana/Winamac" , 0x00BBB0 }, + { "America/Indianapolis" , 0x00B1BE }, + { "America/Inuvik" , 0x00BE69 }, + { "America/Iqaluit" , 0x00C160 }, + { "America/Jamaica" , 0x00C482 }, + { "America/Jujuy" , 0x00C547 }, + { "America/Juneau" , 0x00C6F1 }, + { "America/Kentucky/Louisville" , 0x00CA6F }, + { "America/Kentucky/Monticello" , 0x00CE8D }, + { "America/Knox_IN" , 0x00D212 }, + { "America/Kralendijk" , 0x00D583 }, + { "America/La_Paz" , 0x00D5E9 }, + { "America/Lima" , 0x00D650 }, + { "America/Los_Angeles" , 0x00D6F8 }, + { "America/Louisville" , 0x00DB09 }, + { "America/Lower_Princes" , 0x00DEFE }, + { "America/Maceio" , 0x00DF64 }, + { "America/Managua" , 0x00E09E }, + { "America/Manaus" , 0x00E151 }, + { "America/Marigot" , 0x00E253 }, + { "America/Martinique" , 0x00E2A8 }, + { "America/Matamoros" , 0x00E314 }, + { "America/Mazatlan" , 0x00E56D }, + { "America/Mendoza" , 0x00E7DA }, + { "America/Menominee" , 0x00E98E }, + { "America/Merida" , 0x00ED0F }, + { "America/Metlakatla" , 0x00EF4A }, + { "America/Mexico_City" , 0x00F084 }, + { "America/Miquelon" , 0x00F2FF }, + { "America/Moncton" , 0x00F571 }, + { "America/Monterrey" , 0x00FA08 }, + { "America/Montevideo" , 0x00FC6B }, + { "America/Montreal" , 0x00FF7D }, + { "America/Montserrat" , 0x01046D }, + { "America/Nassau" , 0x0104C2 }, + { "America/New_York" , 0x010807 }, + { "America/Nipigon" , 0x010D12 }, + { "America/Nome" , 0x011063 }, + { "America/Noronha" , 0x0113E1 }, + { "America/North_Dakota/Beulah" , 0x011511 }, + { "America/North_Dakota/Center" , 0x0118A5 }, + { "America/North_Dakota/New_Salem" , 0x011C39 }, + { "America/Ojinaga" , 0x011FE2 }, + { "America/Panama" , 0x012243 }, + { "America/Pangnirtung" , 0x012298 }, + { "America/Paramaribo" , 0x0125CE }, + { "America/Phoenix" , 0x012660 }, + { "America/Port-au-Prince" , 0x01271E }, + { "America/Port_of_Spain" , 0x012A42 }, + { "America/Porto_Acre" , 0x01293E }, + { "America/Porto_Velho" , 0x012A97 }, + { "America/Puerto_Rico" , 0x012B8D }, + { "America/Rainy_River" , 0x012BF8 }, + { "America/Rankin_Inlet" , 0x012F30 }, + { "America/Recife" , 0x013216 }, + { "America/Regina" , 0x013340 }, + { "America/Resolute" , 0x0134FE }, + { "America/Rio_Branco" , 0x0137EF }, + { "America/Rosario" , 0x0138F7 }, + { "America/Santa_Isabel" , 0x013A9D }, + { "America/Santarem" , 0x013E40 }, + { "America/Santiago" , 0x013F45 }, + { "America/Santo_Domingo" , 0x0142EE }, + { "America/Sao_Paulo" , 0x0143B4 }, + { "America/Scoresbysund" , 0x0146C3 }, + { "America/Shiprock" , 0x0149B1 }, + { "America/Sitka" , 0x014D2A }, + { "America/St_Barthelemy" , 0x0150B2 }, + { "America/St_Johns" , 0x015107 }, + { "America/St_Kitts" , 0x01565A }, + { "America/St_Lucia" , 0x0156AF }, + { "America/St_Thomas" , 0x015704 }, + { "America/St_Vincent" , 0x015759 }, + { "America/Swift_Current" , 0x0157AE }, + { "America/Tegucigalpa" , 0x0158CF }, + { "America/Thule" , 0x01594E }, + { "America/Thunder_Bay" , 0x015B95 }, + { "America/Tijuana" , 0x015EDE }, + { "America/Toronto" , 0x016277 }, + { "America/Tortola" , 0x016797 }, + { "America/Vancouver" , 0x0167EC }, + { "America/Virgin" , 0x016C29 }, + { "America/Whitehorse" , 0x016C7E }, + { "America/Winnipeg" , 0x016F9B }, + { "America/Yakutat" , 0x0173DB }, + { "America/Yellowknife" , 0x017746 }, + { "Antarctica/Casey" , 0x017A56 }, + { "Antarctica/Davis" , 0x017AF3 }, + { "Antarctica/DumontDUrville" , 0x017B94 }, + { "Antarctica/Macquarie" , 0x017C26 }, + { "Antarctica/Mawson" , 0x017E6D }, + { "Antarctica/McMurdo" , 0x017EE9 }, + { "Antarctica/Palmer" , 0x018294 }, + { "Antarctica/Rothera" , 0x0185B0 }, + { "Antarctica/South_Pole" , 0x018626 }, + { "Antarctica/Syowa" , 0x0189A4 }, + { "Antarctica/Troll" , 0x018A12 }, + { "Antarctica/Vostok" , 0x018BE4 }, + { "Arctic/Longyearbyen" , 0x018C55 }, + { "Asia/Aden" , 0x018F87 }, + { "Asia/Almaty" , 0x018FDC }, + { "Asia/Amman" , 0x01915B }, + { "Asia/Anadyr" , 0x019411 }, + { "Asia/Aqtau" , 0x0195F6 }, + { "Asia/Aqtobe" , 0x0197F5 }, + { "Asia/Ashgabat" , 0x0199AD }, + { "Asia/Ashkhabad" , 0x019ACA }, + { "Asia/Baghdad" , 0x019BE7 }, + { "Asia/Bahrain" , 0x019D5C }, + { "Asia/Baku" , 0x019DC2 }, + { "Asia/Bangkok" , 0x01A0AA }, + { "Asia/Beirut" , 0x01A0FF }, + { "Asia/Bishkek" , 0x01A40C }, + { "Asia/Brunei" , 0x01A5B8 }, + { "Asia/Calcutta" , 0x01A61A }, + { "Asia/Choibalsan" , 0x01A693 }, + { "Asia/Chongqing" , 0x01A80C }, + { "Asia/Chungking" , 0x01A8FB }, + { "Asia/Colombo" , 0x01A9AA }, + { "Asia/Dacca" , 0x01AA46 }, + { "Asia/Damascus" , 0x01AAEC }, + { "Asia/Dhaka" , 0x01AE3C }, + { "Asia/Dili" , 0x01AEE2 }, + { "Asia/Dubai" , 0x01AF6C }, + { "Asia/Dushanbe" , 0x01AFC1 }, + { "Asia/Gaza" , 0x01B0C4 }, + { "Asia/Harbin" , 0x01B417 }, + { "Asia/Hebron" , 0x01B4FE }, + { "Asia/Ho_Chi_Minh" , 0x01B85A }, + { "Asia/Hong_Kong" , 0x01B8D2 }, + { "Asia/Hovd" , 0x01BA94 }, + { "Asia/Irkutsk" , 0x01BC0C }, + { "Asia/Istanbul" , 0x01BDF2 }, + { "Asia/Jakarta" , 0x01C1DF }, + { "Asia/Jayapura" , 0x01C289 }, + { "Asia/Jerusalem" , 0x01C325 }, + { "Asia/Kabul" , 0x01C654 }, + { "Asia/Kamchatka" , 0x01C6A5 }, + { "Asia/Karachi" , 0x01C881 }, + { "Asia/Kashgar" , 0x01C936 }, + { "Asia/Kathmandu" , 0x01CA07 }, + { "Asia/Katmandu" , 0x01CA6D }, + { "Asia/Khandyga" , 0x01CAD3 }, + { "Asia/Kolkata" , 0x01CCF8 }, + { "Asia/Krasnoyarsk" , 0x01CD71 }, + { "Asia/Kuala_Lumpur" , 0x01CF59 }, + { "Asia/Kuching" , 0x01D016 }, + { "Asia/Kuwait" , 0x01D104 }, + { "Asia/Macao" , 0x01D159 }, + { "Asia/Macau" , 0x01D294 }, + { "Asia/Magadan" , 0x01D3CF }, + { "Asia/Makassar" , 0x01D5B1 }, + { "Asia/Manila" , 0x01D676 }, + { "Asia/Muscat" , 0x01D6FB }, + { "Asia/Nicosia" , 0x01D750 }, + { "Asia/Novokuznetsk" , 0x01DA38 }, + { "Asia/Novosibirsk" , 0x01DC3A }, + { "Asia/Omsk" , 0x01DE25 }, + { "Asia/Oral" , 0x01E00C }, + { "Asia/Phnom_Penh" , 0x01E1DC }, + { "Asia/Pontianak" , 0x01E254 }, + { "Asia/Pyongyang" , 0x01E316 }, + { "Asia/Qatar" , 0x01E383 }, + { "Asia/Qyzylorda" , 0x01E3E9 }, + { "Asia/Rangoon" , 0x01E5BF }, + { "Asia/Riyadh" , 0x01E637 }, + { "Asia/Saigon" , 0x01E68C }, + { "Asia/Sakhalin" , 0x01E704 }, + { "Asia/Samarkand" , 0x01E8FB }, + { "Asia/Seoul" , 0x01EA31 }, + { "Asia/Shanghai" , 0x01EAD5 }, + { "Asia/Singapore" , 0x01EBB5 }, + { "Asia/Taipei" , 0x01EC6C }, + { "Asia/Tashkent" , 0x01ED84 }, + { "Asia/Tbilisi" , 0x01EEB5 }, + { "Asia/Tehran" , 0x01F06F }, + { "Asia/Tel_Aviv" , 0x01F2DD }, + { "Asia/Thimbu" , 0x01F60C }, + { "Asia/Thimphu" , 0x01F672 }, + { "Asia/Tokyo" , 0x01F6D8 }, + { "Asia/Ujung_Pandang" , 0x01F761 }, + { "Asia/Ulaanbaatar" , 0x01F7DE }, + { "Asia/Ulan_Bator" , 0x01F939 }, + { "Asia/Urumqi" , 0x01FA86 }, + { "Asia/Ust-Nera" , 0x01FB4D }, + { "Asia/Vientiane" , 0x01FD52 }, + { "Asia/Vladivostok" , 0x01FDCA }, + { "Asia/Yakutsk" , 0x01FFAF }, + { "Asia/Yekaterinburg" , 0x020194 }, + { "Asia/Yerevan" , 0x02039F }, + { "Atlantic/Azores" , 0x02059F }, + { "Atlantic/Bermuda" , 0x020AA2 }, + { "Atlantic/Canary" , 0x020D83 }, + { "Atlantic/Cape_Verde" , 0x021059 }, + { "Atlantic/Faeroe" , 0x0210D2 }, + { "Atlantic/Faroe" , 0x021376 }, + { "Atlantic/Jan_Mayen" , 0x02161A }, + { "Atlantic/Madeira" , 0x02194C }, + { "Atlantic/Reykjavik" , 0x021E55 }, + { "Atlantic/South_Georgia" , 0x02200E }, + { "Atlantic/St_Helena" , 0x022220 }, + { "Atlantic/Stanley" , 0x022052 }, + { "Australia/ACT" , 0x022275 }, + { "Australia/Adelaide" , 0x022592 }, + { "Australia/Brisbane" , 0x0228BE }, + { "Australia/Broken_Hill" , 0x022985 }, + { "Australia/Canberra" , 0x022CC3 }, + { "Australia/Currie" , 0x022FE0 }, + { "Australia/Darwin" , 0x023313 }, + { "Australia/Eucla" , 0x023399 }, + { "Australia/Hobart" , 0x02346E }, + { "Australia/LHI" , 0x0237CC }, + { "Australia/Lindeman" , 0x023A67 }, + { "Australia/Lord_Howe" , 0x023B48 }, + { "Australia/Melbourne" , 0x023DF3 }, + { "Australia/North" , 0x024118 }, + { "Australia/NSW" , 0x02418C }, + { "Australia/Perth" , 0x0244A9 }, + { "Australia/Queensland" , 0x024581 }, + { "Australia/South" , 0x02462D }, + { "Australia/Sydney" , 0x02494A }, + { "Australia/Tasmania" , 0x024C87 }, + { "Australia/Victoria" , 0x024FCC }, + { "Australia/West" , 0x0252E9 }, + { "Australia/Yancowinna" , 0x02539F }, + { "Brazil/Acre" , 0x0256C1 }, + { "Brazil/DeNoronha" , 0x0257C5 }, + { "Brazil/East" , 0x0258E5 }, + { "Brazil/West" , 0x025BC2 }, + { "Canada/Atlantic" , 0x025CBA }, + { "Canada/Central" , 0x0261A2 }, + { "Canada/East-Saskatchewan" , 0x026AAC }, + { "Canada/Eastern" , 0x0265BC }, + { "Canada/Mountain" , 0x026C35 }, + { "Canada/Newfoundland" , 0x026FAB }, + { "Canada/Pacific" , 0x0274D6 }, + { "Canada/Saskatchewan" , 0x0278EF }, + { "Canada/Yukon" , 0x027A78 }, + { "CET" , 0x027D7B }, + { "Chile/Continental" , 0x028084 }, + { "Chile/EasterIsland" , 0x02841F }, + { "CST6CDT" , 0x028761 }, + { "Cuba" , 0x028AB2 }, + { "EET" , 0x028E25 }, + { "Egypt" , 0x0290D8 }, + { "Eire" , 0x0294BF }, + { "EST" , 0x0299D0 }, + { "EST5EDT" , 0x029A14 }, + { "Etc/GMT" , 0x029D65 }, + { "Etc/GMT+0" , 0x029E31 }, + { "Etc/GMT+1" , 0x029EBB }, + { "Etc/GMT+10" , 0x029F48 }, + { "Etc/GMT+11" , 0x029FD6 }, + { "Etc/GMT+12" , 0x02A064 }, + { "Etc/GMT+2" , 0x02A17F }, + { "Etc/GMT+3" , 0x02A20B }, + { "Etc/GMT+4" , 0x02A297 }, + { "Etc/GMT+5" , 0x02A323 }, + { "Etc/GMT+6" , 0x02A3AF }, + { "Etc/GMT+7" , 0x02A43B }, + { "Etc/GMT+8" , 0x02A4C7 }, + { "Etc/GMT+9" , 0x02A553 }, + { "Etc/GMT-0" , 0x029DED }, + { "Etc/GMT-1" , 0x029E75 }, + { "Etc/GMT-10" , 0x029F01 }, + { "Etc/GMT-11" , 0x029F8F }, + { "Etc/GMT-12" , 0x02A01D }, + { "Etc/GMT-13" , 0x02A0AB }, + { "Etc/GMT-14" , 0x02A0F2 }, + { "Etc/GMT-2" , 0x02A139 }, + { "Etc/GMT-3" , 0x02A1C5 }, + { "Etc/GMT-4" , 0x02A251 }, + { "Etc/GMT-5" , 0x02A2DD }, + { "Etc/GMT-6" , 0x02A369 }, + { "Etc/GMT-7" , 0x02A3F5 }, + { "Etc/GMT-8" , 0x02A481 }, + { "Etc/GMT-9" , 0x02A50D }, + { "Etc/GMT0" , 0x029DA9 }, + { "Etc/Greenwich" , 0x02A599 }, + { "Etc/UCT" , 0x02A5DD }, + { "Etc/Universal" , 0x02A621 }, + { "Etc/UTC" , 0x02A665 }, + { "Etc/Zulu" , 0x02A6A9 }, + { "Europe/Amsterdam" , 0x02A6ED }, + { "Europe/Andorra" , 0x02AB2B }, + { "Europe/Athens" , 0x02ADA7 }, + { "Europe/Belfast" , 0x02B0EA }, + { "Europe/Belgrade" , 0x02B621 }, + { "Europe/Berlin" , 0x02B8EA }, + { "Europe/Bratislava" , 0x02BC4E }, + { "Europe/Brussels" , 0x02BF80 }, + { "Europe/Bucharest" , 0x02C3B7 }, + { "Europe/Budapest" , 0x02C6E1 }, + { "Europe/Busingen" , 0x02CA54 }, + { "Europe/Chisinau" , 0x02CD0B }, + { "Europe/Copenhagen" , 0x02D099 }, + { "Europe/Dublin" , 0x02D3A3 }, + { "Europe/Gibraltar" , 0x02D8B4 }, + { "Europe/Guernsey" , 0x02DD0B }, + { "Europe/Helsinki" , 0x02E242 }, + { "Europe/Isle_of_Man" , 0x02E4F8 }, + { "Europe/Istanbul" , 0x02EA2F }, + { "Europe/Jersey" , 0x02EE1C }, + { "Europe/Kaliningrad" , 0x02F353 }, + { "Europe/Kiev" , 0x02F5B9 }, + { "Europe/Lisbon" , 0x02F8D5 }, + { "Europe/Ljubljana" , 0x02FDD9 }, + { "Europe/London" , 0x0300A2 }, + { "Europe/Luxembourg" , 0x0305D9 }, + { "Europe/Madrid" , 0x030A2F }, + { "Europe/Malta" , 0x030DF5 }, + { "Europe/Mariehamn" , 0x0311AE }, + { "Europe/Minsk" , 0x031464 }, + { "Europe/Monaco" , 0x031672 }, + { "Europe/Moscow" , 0x031AAD }, + { "Europe/Nicosia" , 0x031D02 }, + { "Europe/Oslo" , 0x031FEA }, + { "Europe/Paris" , 0x03231C }, + { "Europe/Podgorica" , 0x032762 }, + { "Europe/Prague" , 0x032A2B }, + { "Europe/Riga" , 0x032D5D }, + { "Europe/Rome" , 0x0330A2 }, + { "Europe/Samara" , 0x033465 }, + { "Europe/San_Marino" , 0x033698 }, + { "Europe/Sarajevo" , 0x033A5B }, + { "Europe/Simferopol" , 0x033D24 }, + { "Europe/Skopje" , 0x033F70 }, + { "Europe/Sofia" , 0x034239 }, + { "Europe/Stockholm" , 0x034541 }, + { "Europe/Tallinn" , 0x0347F0 }, + { "Europe/Tirane" , 0x034B2A }, + { "Europe/Tiraspol" , 0x034E30 }, + { "Europe/Uzhgorod" , 0x0351BE }, + { "Europe/Vaduz" , 0x0354D5 }, + { "Europe/Vatican" , 0x035784 }, + { "Europe/Vienna" , 0x035B47 }, + { "Europe/Vilnius" , 0x035E74 }, + { "Europe/Volgograd" , 0x0361B3 }, + { "Europe/Warsaw" , 0x0363B3 }, + { "Europe/Zagreb" , 0x036794 }, + { "Europe/Zaporozhye" , 0x036A5D }, + { "Europe/Zurich" , 0x036D9E }, + { "Factory" , 0x03704D }, + { "GB" , 0x0370BE }, + { "GB-Eire" , 0x0375F5 }, + { "GMT" , 0x037B2C }, + { "GMT+0" , 0x037BF8 }, + { "GMT-0" , 0x037BB4 }, + { "GMT0" , 0x037B70 }, + { "Greenwich" , 0x037C3C }, + { "Hongkong" , 0x037C80 }, + { "HST" , 0x037E42 }, + { "Iceland" , 0x037E86 }, + { "Indian/Antananarivo" , 0x03803F }, + { "Indian/Chagos" , 0x0380B3 }, + { "Indian/Christmas" , 0x038115 }, + { "Indian/Cocos" , 0x038159 }, + { "Indian/Comoro" , 0x03819D }, + { "Indian/Kerguelen" , 0x0381F2 }, + { "Indian/Mahe" , 0x038247 }, + { "Indian/Maldives" , 0x03829C }, + { "Indian/Mauritius" , 0x0382F1 }, + { "Indian/Mayotte" , 0x038367 }, + { "Indian/Reunion" , 0x0383BC }, + { "Iran" , 0x038411 }, + { "Israel" , 0x03867F }, + { "Jamaica" , 0x0389AE }, + { "Japan" , 0x038A73 }, + { "Kwajalein" , 0x038AFC }, + { "Libya" , 0x038B5F }, + { "MET" , 0x038C68 }, + { "Mexico/BajaNorte" , 0x038F71 }, + { "Mexico/BajaSur" , 0x0392DA }, + { "Mexico/General" , 0x03951F }, + { "MST" , 0x03977D }, + { "MST7MDT" , 0x0397C1 }, + { "Navajo" , 0x039B12 }, + { "NZ" , 0x039E8B }, + { "NZ-CHAT" , 0x03A209 }, + { "Pacific/Apia" , 0x03A4F1 }, + { "Pacific/Auckland" , 0x03A68D }, + { "Pacific/Chatham" , 0x03AA19 }, + { "Pacific/Chuuk" , 0x03AD10 }, + { "Pacific/Easter" , 0x03AD69 }, + { "Pacific/Efate" , 0x03B0C7 }, + { "Pacific/Enderbury" , 0x03B18D }, + { "Pacific/Fakaofo" , 0x03B1FB }, + { "Pacific/Fiji" , 0x03B24C }, + { "Pacific/Funafuti" , 0x03B3DF }, + { "Pacific/Galapagos" , 0x03B423 }, + { "Pacific/Gambier" , 0x03B49B }, + { "Pacific/Guadalcanal" , 0x03B500 }, + { "Pacific/Guam" , 0x03B555 }, + { "Pacific/Honolulu" , 0x03B5AB }, + { "Pacific/Johnston" , 0x03B622 }, + { "Pacific/Kiritimati" , 0x03B6A1 }, + { "Pacific/Kosrae" , 0x03B70C }, + { "Pacific/Kwajalein" , 0x03B769 }, + { "Pacific/Majuro" , 0x03B7D5 }, + { "Pacific/Marquesas" , 0x03B834 }, + { "Pacific/Midway" , 0x03B89B }, + { "Pacific/Nauru" , 0x03B925 }, + { "Pacific/Niue" , 0x03B99D }, + { "Pacific/Norfolk" , 0x03B9FB }, + { "Pacific/Noumea" , 0x03BA50 }, + { "Pacific/Pago_Pago" , 0x03BAE0 }, + { "Pacific/Palau" , 0x03BB69 }, + { "Pacific/Pitcairn" , 0x03BBAD }, + { "Pacific/Pohnpei" , 0x03BC02 }, + { "Pacific/Ponape" , 0x03BC57 }, + { "Pacific/Port_Moresby" , 0x03BC9C }, + { "Pacific/Rarotonga" , 0x03BCE0 }, + { "Pacific/Saipan" , 0x03BDBC }, + { "Pacific/Samoa" , 0x03BE1F }, + { "Pacific/Tahiti" , 0x03BEA8 }, + { "Pacific/Tarawa" , 0x03BF0D }, + { "Pacific/Tongatapu" , 0x03BF61 }, + { "Pacific/Truk" , 0x03BFED }, + { "Pacific/Wake" , 0x03C032 }, + { "Pacific/Wallis" , 0x03C082 }, + { "Pacific/Yap" , 0x03C0C6 }, + { "Poland" , 0x03C10B }, + { "Portugal" , 0x03C4EC }, + { "PRC" , 0x03C9E8 }, + { "PST8PDT" , 0x03CA99 }, + { "ROC" , 0x03CDEA }, + { "ROK" , 0x03CF02 }, + { "Singapore" , 0x03CFA6 }, + { "Turkey" , 0x03D05D }, + { "UCT" , 0x03D44A }, + { "Universal" , 0x03D48E }, + { "US/Alaska" , 0x03D4D2 }, + { "US/Aleutian" , 0x03D83B }, + { "US/Arizona" , 0x03DBA1 }, + { "US/Central" , 0x03DC2F }, + { "US/East-Indiana" , 0x03E639 }, + { "US/Eastern" , 0x03E13A }, + { "US/Hawaii" , 0x03E8A3 }, + { "US/Indiana-Starke" , 0x03E914 }, + { "US/Michigan" , 0x03EC85 }, + { "US/Mountain" , 0x03EFBC }, + { "US/Pacific" , 0x03F335 }, + { "US/Pacific-New" , 0x03F73A }, + { "US/Samoa" , 0x03FB3F }, + { "UTC" , 0x03FBC8 }, + { "W-SU" , 0x03FEBF }, + { "WET" , 0x03FC0C }, + { "Zulu" , 0x0400FD }, }; /* This is a generated file, do not modify */ -const unsigned char timelib_timezone_db_data_builtin[262480] = { +const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Abidjan */ @@ -711,8 +711,8 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { /* 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, 0xB6, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00, 0x03, 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,14 +743,14 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 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, 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, +0x4C, 0xA4, 0xFA, 0x50, 0x53, 0x75, 0x38, 0xE0, 0x53, 0xAC, 0x89, 0xD0, 0x53, 0xDA, 0xBC, 0x60, +0x54, 0x24, 0x82, 0x50, 0x55, 0x39, 0x6B, 0x60, 0x55, 0x79, 0xF6, 0xD0, 0x55, 0xB1, 0x63, 0xE0, +0x56, 0x04, 0x64, 0x50, 0x57, 0x22, 0x87, 0xE0, 0x57, 0x50, 0x9E, 0x50, 0x57, 0x7E, 0xD0, 0xE0, +0x57, 0xED, 0x80, 0xD0, 0x59, 0x02, 0x69, 0xE0, 0x59, 0x27, 0x45, 0xD0, 0x59, 0x55, 0x78, 0x60, +0x59, 0xCD, 0x62, 0xD0, 0x5A, 0xE2, 0x4B, 0xE0, 0x5A, 0xF4, 0xB2, 0xD0, 0x5B, 0x22, 0xE5, 0x60, +0x5B, 0xAD, 0x44, 0xD0, 0x5C, 0xC2, 0x2D, 0xE0, 0x5C, 0xCB, 0x5A, 0x50, 0x5C, 0xF9, 0x8C, 0xE0, +0x5D, 0x8D, 0x26, 0xD0, 0x5E, 0xD0, 0x34, 0x60, 0x5F, 0x6D, 0x08, 0xD0, 0x60, 0x9D, 0xA1, 0x60, +0x61, 0x56, 0x25, 0x50, 0x62, 0x74, 0x48, 0xE0, 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, @@ -763,16 +763,16 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 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, 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, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 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, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, +0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 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, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x45, 0x45, 0x53, 0x54, +0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 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, @@ -786,23 +786,23 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 0x4A, 0x23, 0x1A, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x4B, 0xDC, 0xC0, 0x80, 0x4C, 0x5D, 0xE5, 0x70, 0x4D, 0x97, 0xB8, 0x80, 0x4E, 0x34, 0x8C, 0xF0, 0x4F, 0x9C, 0xA0, 0xA0, 0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0, 0x51, 0xD8, 0xCB, 0xA0, -0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, 0x53, 0xAF, 0x73, 0x20, -0x53, 0xD7, 0x00, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, 0x55, 0x82, 0x26, 0x20, -0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x56, 0x2A, 0xA0, -0x57, 0x7D, 0xB7, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, 0x59, 0x28, 0xDD, 0xA0, -0x59, 0x50, 0x6A, 0xA0, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xFB, 0x90, 0xA0, -0x5B, 0x23, 0x1D, 0xA0, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCF, 0x95, 0x20, -0x5C, 0xF7, 0x22, 0x20, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, 0x5E, 0xA2, 0x48, 0x20, -0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, 0x60, 0x74, 0xFB, 0x20, -0x60, 0x9C, 0x88, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, 0x62, 0x48, 0xFF, 0xA0, -0x62, 0x70, 0x8C, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, 0x65, 0x3D, 0xBC, 0xA0, -0x66, 0x15, 0xF2, 0xA0, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xE9, 0xF7, 0x20, 0x68, 0xFD, 0x80, 0xA0, +0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, 0x53, 0xAE, 0x21, 0xA0, +0x53, 0xDC, 0x46, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, 0x55, 0x7B, 0x8E, 0xA0, +0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x52, 0x36, 0x20, +0x57, 0x80, 0x5A, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, 0x59, 0x1F, 0xA3, 0x20, +0x59, 0x57, 0x02, 0x20, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xF6, 0x4A, 0xA0, +0x5B, 0x24, 0x6F, 0x20, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCC, 0xF2, 0x20, +0x5C, 0xFB, 0x16, 0xA0, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, 0x5E, 0x9A, 0x5F, 0x20, +0x5E, 0xD1, 0xBE, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, 0x60, 0x71, 0x06, 0xA0, +0x60, 0x9F, 0x2B, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, 0x62, 0x47, 0xAE, 0x20, +0x62, 0x75, 0xD2, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, 0x65, 0x3D, 0xBC, 0xA0, +0x66, 0x19, 0xE7, 0x20, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF0, 0x8E, 0xA0, 0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0, -0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCE, 0xC9, 0xA0, -0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA8, 0x14, 0x20, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x7C, 0x18, 0xA0, +0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCD, 0x78, 0x20, +0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA4, 0x1F, 0xA0, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x7A, 0xC7, 0x20, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 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, @@ -919,23 +919,23 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 0x4C, 0x5D, 0xE5, 0x70, 0x4D, 0x97, 0xB8, 0x80, 0x4E, 0x34, 0x8C, 0xF0, 0x4F, 0x9C, 0xA0, 0xA0, 0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0, 0x51, 0xD8, 0xCB, 0xA0, 0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, -0x53, 0xAF, 0x73, 0x20, 0x53, 0xD7, 0x00, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, -0x55, 0x82, 0x26, 0x20, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, -0x57, 0x56, 0x2A, 0xA0, 0x57, 0x7D, 0xB7, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, -0x59, 0x28, 0xDD, 0xA0, 0x59, 0x50, 0x6A, 0xA0, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, -0x5A, 0xFB, 0x90, 0xA0, 0x5B, 0x23, 0x1D, 0xA0, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, -0x5C, 0xCF, 0x95, 0x20, 0x5C, 0xF7, 0x22, 0x20, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, -0x5E, 0xA2, 0x48, 0x20, 0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, -0x60, 0x74, 0xFB, 0x20, 0x60, 0x9C, 0x88, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, -0x62, 0x48, 0xFF, 0xA0, 0x62, 0x70, 0x8C, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, -0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x15, 0xF2, 0xA0, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xE9, 0xF7, 0x20, +0x53, 0xAE, 0x21, 0xA0, 0x53, 0xDC, 0x46, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, +0x55, 0x7B, 0x8E, 0xA0, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, +0x57, 0x52, 0x36, 0x20, 0x57, 0x80, 0x5A, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, +0x59, 0x1F, 0xA3, 0x20, 0x59, 0x57, 0x02, 0x20, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, +0x5A, 0xF6, 0x4A, 0xA0, 0x5B, 0x24, 0x6F, 0x20, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, +0x5C, 0xCC, 0xF2, 0x20, 0x5C, 0xFB, 0x16, 0xA0, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, +0x5E, 0x9A, 0x5F, 0x20, 0x5E, 0xD1, 0xBE, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, +0x60, 0x71, 0x06, 0xA0, 0x60, 0x9F, 0x2B, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, +0x62, 0x47, 0xAE, 0x20, 0x62, 0x75, 0xD2, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, +0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x19, 0xE7, 0x20, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF0, 0x8E, 0xA0, 0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, -0x7B, 0xCE, 0xC9, 0xA0, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA8, 0x14, 0x20, 0x7E, 0x79, 0xB2, 0xA0, -0x7F, 0x7C, 0x18, 0xA0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x7B, 0xCD, 0x78, 0x20, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA4, 0x1F, 0xA0, 0x7E, 0x79, 0xB2, 0xA0, +0x7F, 0x7A, 0xC7, 0x20, 0x01, 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, @@ -9553,7 +9553,7 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { /* Asia/Vladivostok */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0xA7, 0x59, 0x47, 0x50, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA7, 0x59, 0x47, 0x50, 0xB5, 0xA3, 0xB6, 0xF0, 0x15, 0x27, 0x45, 0x60, 0x16, 0x18, 0x79, 0xD0, 0x17, 0x08, 0x78, 0xE0, 0x17, 0xF9, 0xAD, 0x50, 0x18, 0xE9, 0xAC, 0x60, 0x19, 0xDA, 0xE0, 0xD0, 0x1A, 0xCC, 0x31, 0x60, 0x1B, 0xBC, 0x3E, 0x80, 0x1C, 0xAC, 0x2F, 0x80, 0x1D, 0x9C, 0x20, 0x80, 0x1E, 0x8C, 0x11, 0x80, @@ -9576,12 +9576,12 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x00, 0x00, 0x7B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, -0x00, 0x00, 0x8C, 0xA0, 0x01, 0x0F, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x00, 0x00, 0x9A, 0xB0, +0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x53, 0x54, -0x00, 0x56, 0x4C, 0x41, 0x53, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x32, 0x3A, 0x01, 0xDB, -0xF8, 0xF5, 0x00, 0x00, 0x00, 0x16, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, -0x2D, 0x20, 0x41, 0x6D, 0x75, 0x72, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xCB, 0x32, 0x3A, 0x01, 0xDB, 0xF8, 0xF5, 0x00, 0x00, 0x00, 0x16, 0x4D, +0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, 0x20, 0x41, 0x6D, 0x75, 0x72, 0x20, +0x52, 0x69, 0x76, 0x65, 0x72, /* Asia/Yakutsk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -12053,8 +12053,8 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { /* 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, 0xB6, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00, 0x03, 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, @@ -12085,14 +12085,14 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 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, 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, +0x4C, 0xA4, 0xFA, 0x50, 0x53, 0x75, 0x38, 0xE0, 0x53, 0xAC, 0x89, 0xD0, 0x53, 0xDA, 0xBC, 0x60, +0x54, 0x24, 0x82, 0x50, 0x55, 0x39, 0x6B, 0x60, 0x55, 0x79, 0xF6, 0xD0, 0x55, 0xB1, 0x63, 0xE0, +0x56, 0x04, 0x64, 0x50, 0x57, 0x22, 0x87, 0xE0, 0x57, 0x50, 0x9E, 0x50, 0x57, 0x7E, 0xD0, 0xE0, +0x57, 0xED, 0x80, 0xD0, 0x59, 0x02, 0x69, 0xE0, 0x59, 0x27, 0x45, 0xD0, 0x59, 0x55, 0x78, 0x60, +0x59, 0xCD, 0x62, 0xD0, 0x5A, 0xE2, 0x4B, 0xE0, 0x5A, 0xF4, 0xB2, 0xD0, 0x5B, 0x22, 0xE5, 0x60, +0x5B, 0xAD, 0x44, 0xD0, 0x5C, 0xC2, 0x2D, 0xE0, 0x5C, 0xCB, 0x5A, 0x50, 0x5C, 0xF9, 0x8C, 0xE0, +0x5D, 0x8D, 0x26, 0xD0, 0x5E, 0xD0, 0x34, 0x60, 0x5F, 0x6D, 0x08, 0xD0, 0x60, 0x9D, 0xA1, 0x60, +0x61, 0x56, 0x25, 0x50, 0x62, 0x74, 0x48, 0xE0, 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, @@ -12105,16 +12105,16 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 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, 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, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 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, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, +0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 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, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x45, 0x45, 0x53, 0x54, +0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 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, @@ -14441,7 +14441,7 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { /* Europe/Moscow */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x5F, 0x1E, 0xD8, +0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x9B, 0x5F, 0x1E, 0xD8, 0x9D, 0x3E, 0xF2, 0x98, 0x9E, 0x2A, 0xEF, 0x18, 0x9E, 0xF7, 0x39, 0x88, 0x9F, 0x84, 0x58, 0x18, 0xA0, 0xD8, 0x6D, 0x08, 0xA1, 0x00, 0x16, 0x28, 0xA1, 0x3C, 0xA6, 0x40, 0xA4, 0x10, 0x6D, 0xC0, 0xA4, 0x3D, 0x32, 0xB0, 0xA5, 0x15, 0x68, 0xB0, 0xA5, 0x3D, 0x03, 0xC0, 0xA7, 0x1E, 0x45, 0x50, @@ -14468,15 +14468,15 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x00, 0x00, 0x23, 0x28, 0x00, 0x00, 0x00, 0x00, 0x31, 0x68, 0x01, 0x04, 0x00, 0x00, 0x23, 0x58, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x78, 0x01, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x46, 0x50, -0x01, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, -0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, +0x01, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, +0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, -0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, -0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, -0x65, 0x98, 0x01, 0x4C, 0x01, 0x7D, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, -0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x52, 0x75, 0x73, 0x73, 0x69, -0x61, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4D, 0x00, 0x45, +0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xDE, 0x65, 0x98, 0x01, 0x4C, 0x01, 0x7D, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, +0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x52, +0x75, 0x73, 0x73, 0x69, 0x61, /* Europe/Nicosia */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18429,7 +18429,7 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { /* W-SU */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x5F, 0x1E, 0xD8, +0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x9B, 0x5F, 0x1E, 0xD8, 0x9D, 0x3E, 0xF2, 0x98, 0x9E, 0x2A, 0xEF, 0x18, 0x9E, 0xF7, 0x39, 0x88, 0x9F, 0x84, 0x58, 0x18, 0xA0, 0xD8, 0x6D, 0x08, 0xA1, 0x00, 0x16, 0x28, 0xA1, 0x3C, 0xA6, 0x40, 0xA4, 0x10, 0x6D, 0xC0, 0xA4, 0x3D, 0x32, 0xB0, 0xA5, 0x15, 0x68, 0xB0, 0xA5, 0x3D, 0x03, 0xC0, 0xA7, 0x1E, 0x45, 0x50, @@ -18456,13 +18456,13 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x00, 0x00, 0x23, 0x28, 0x00, 0x00, 0x00, 0x00, 0x31, 0x68, 0x01, 0x04, 0x00, 0x00, 0x23, 0x58, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x78, 0x01, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x46, 0x50, -0x01, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, -0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, +0x01, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, +0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, -0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, -0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, -0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4D, 0x00, 0x45, +0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Zulu */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18471,4 +18471,4 @@ const unsigned char timelib_timezone_db_data_builtin[262480] = { 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.3", 580, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2014.5", 580, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff --git a/ext/date/php_date.c b/ext/date/php_date.c index e8a7ebfe1..1809d6653 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2582,6 +2582,8 @@ PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, err->error_messages[0].position, err->error_messages[0].character, err->error_messages[0].message); } if (err && err->error_count) { + timelib_time_dtor(dateobj->time); + dateobj->time = 0; return 0; } @@ -2729,9 +2731,7 @@ PHP_METHOD(DateTime, __construct) zend_replace_error_handling(EH_THROW, NULL, &error_handling TSRMLS_CC); if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sO!", &time_str, &time_str_len, &timezone_object, date_ce_timezone)) { - if (!php_date_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 1 TSRMLS_CC)) { - ZVAL_NULL(getThis()); - } + php_date_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 1 TSRMLS_CC); } zend_restore_error_handling(&error_handling TSRMLS_CC); } diff --git a/ext/date/tests/bug41523.phpt b/ext/date/tests/bug41523.phpt index 05c591f06..68fe1bd6a 100644 --- a/ext/date/tests/bug41523.phpt +++ b/ext/date/tests/bug41523.phpt @@ -46,7 +46,7 @@ array(12) { bool(false) object(DateTime)#1 (3) { ["date"]=> - string(20) "-0001-11-30 00:00:00.000000" + string(27) "-0001-11-30 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> diff --git a/ext/date/tests/bug67118.phpt b/ext/date/tests/bug67118.phpt index 637175764..973b4eb8d 100644 --- a/ext/date/tests/bug67118.phpt +++ b/ext/date/tests/bug67118.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #67118 php-cgi crashes regularly on IIS 7 +Bug #67118 crashes in DateTime when this used after failed __construct --INI-- date.timezone=Europe/Berlin --FILE-- @@ -11,17 +11,17 @@ class mydt extends datetime if (!empty($tz) && !is_object($tz)) { $tz = new DateTimeZone($tz); } - - @parent::__construct($time, $tz); + try { + @parent::__construct($time, $tz); + } catch (Exception $e) { + echo "Bad date" . $this->format("Y") . "\n"; + } } }; new mydt("Funktionsansvarig rådgivning och juridik", "UTC"); +?> --EXPECTF-- -Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (Funktionsansvarig rådgivning och juridik) at position 0 (F): The timezone could not be found in the database' in %sbug67118.php:%d -Stack trace: -#0 %sbug67118.php(%d): DateTime->__construct('Funktionsansvar...', Object(DateTimeZone)) -#1 %sbug67118.php(%d): mydt->__construct('Funktionsansvar...', 'UTC') -#2 {main} - thrown in %sbug67118.php on line %d +Warning: DateTime::format(): The DateTime object has not been correctly initialized by its constructor in %sbug67118.php on line %d +Bad date diff --git a/ext/date/tests/bug67118_2.phpt b/ext/date/tests/bug67118_2.phpt new file mode 100644 index 000000000..b4904a158 --- /dev/null +++ b/ext/date/tests/bug67118_2.phpt @@ -0,0 +1,35 @@ +--TEST-- +Regression introduce in fix for Bug #67118 +--INI-- +date.timezone=Europe/Paris +--FILE-- +<?php +class Foo extends DateTime { + public function __construct($time = null) { + $tz = new DateTimeZone('UTC'); + try { + echo "First try\n"; + parent::__construct($time, $tz); + return; + } catch (Exception $e) { + echo "Second try\n"; + parent::__construct($time.'C', $tz); + } + } +} +$date = '12 Sep 2007 15:49:12 UT'; +var_dump(new Foo($date)); +?> +Done +--EXPECTF-- +First try +Second try +object(Foo)#1 (3) { + ["date"]=> + string(%d) "2007-09-12 15:49:%s" + ["timezone_type"]=> + int(3) + ["timezone"]=> + string(3) "UTC" +} +Done diff --git a/ext/dom/tests/DOMDocument_validate_external_dtd.phpt b/ext/dom/tests/DOMDocument_validate_external_dtd.phpt index 51a044c54..dd4ec960d 100644 --- a/ext/dom/tests/DOMDocument_validate_external_dtd.phpt +++ b/ext/dom/tests/DOMDocument_validate_external_dtd.phpt @@ -12,6 +12,7 @@ require_once dirname(__FILE__) .'/skipif.inc'; // reusing existing xml: http://cvs.php.net/viewvc.cgi/php-src/ext/dom/tests/dom.xml?view=co&content-type=text%2Fplain // reusing existing dtd: http://cvs.php.net/viewvc.cgi/php-src/ext/dom/tests/dom.ent?view=co&content-type=text%2Fplain $dom = new DOMDocument('1.0'); +$dom->substituteEntities = true; $dom->load(dirname(__FILE__).'/dom.xml'); var_dump($dom->validate()); ?> diff --git a/ext/dom/tests/bug67081.phpt b/ext/dom/tests/bug67081.phpt index 56c2c8e58..c6dc007d4 100644 --- a/ext/dom/tests/bug67081.phpt +++ b/ext/dom/tests/bug67081.phpt @@ -7,18 +7,22 @@ require_once('skipif.inc'); --FILE-- <?php $domDocument = new DOMDocument(); + $domDocument->substituteEntities = true; $domDocument->load(dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug67081_0.xml"); var_dump($domDocument->doctype->internalSubset); $domDocument = new DOMDocument(); + $domDocument->substituteEntities = true; $domDocument->load(dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug67081_1.xml"); var_dump($domDocument->doctype->internalSubset); $domDocument = new DOMDocument(); + $domDocument->substituteEntities = true; $domDocument->load(dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug67081_2.xml"); var_dump($domDocument->doctype->internalSubset); $domDocument = new DOMDocument(); + $domDocument->substituteEntities = true; $domDocument->load(dirname(__FILE__) . DIRECTORY_SEPARATOR . "dom.xml"); var_dump($domDocument->doctype->internalSubset); ?> diff --git a/ext/exif/tests/exif004.phpt b/ext/exif/tests/exif004.phpt index 229f49e14..8797955f8 100644 --- a/ext/exif/tests/exif004.phpt +++ b/ext/exif/tests/exif004.phpt @@ -18,7 +18,7 @@ exif.encode_unicode=ISO-8859-1 test4.jpg is a 1*1 image that contains Exif tags written by WindowsXP */ $image = exif_read_data(dirname(__FILE__).'/test4.jpg','',true,false); -echo var_dump($image['WINXP']); +var_dump($image['WINXP']); ?> --EXPECT-- array(5) { diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index cbe3b0cf7..ad285cfe1 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -277,13 +277,15 @@ cdf_check_stream_offset(const cdf_stream_t *sst, const cdf_header_t *h, { const char *b = (const char *)sst->sst_tab; const char *e = ((const char *)p) + tail; + size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ? + CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h); (void)&line; - if (e >= b && (size_t)(e - b) <= CDF_SEC_SIZE(h) * sst->sst_len) + if (e >= b && (size_t)(e - b) <= ss * sst->sst_len) return 0; DPRINTF(("%d: offset begin %p < end %p || %" SIZE_T_FORMAT "u" " > %" SIZE_T_FORMAT "u [%" SIZE_T_FORMAT "u %" SIZE_T_FORMAT "u]\n", line, b, e, (size_t)(e - b), - CDF_SEC_SIZE(h) * sst->sst_len, CDF_SEC_SIZE(h), sst->sst_len)); + ss * sst->sst_len, ss, sst->sst_len)); errno = EFTYPE; return -1; } @@ -468,7 +470,8 @@ size_t cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size) { size_t i, j; - cdf_secid_t maxsector = (cdf_secid_t)(sat->sat_len * size); + cdf_secid_t maxsector = (cdf_secid_t)((sat->sat_len * size) + / sizeof(maxsector)); DPRINTF(("Chain:")); for (j = i = 0; sid >= 0; i++, j++) { @@ -478,8 +481,8 @@ cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size) errno = EFTYPE; return (size_t)-1; } - if (sid > maxsector) { - DPRINTF(("Sector %d > %d\n", sid, maxsector)); + if (sid >= maxsector) { + DPRINTF(("Sector %d >= %d\n", sid, maxsector)); errno = EFTYPE; return (size_t)-1; } @@ -812,7 +815,11 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h, if (cdf_check_stream_offset(sst, h, e, 0, __LINE__) == -1) goto out; for (i = 0; i < sh.sh_properties; i++) { - size_t ofs = CDF_GETUINT32(p, (i << 1) + 1); + size_t ofs, tail = (i << 1) + 1; + if (cdf_check_stream_offset(sst, h, p, tail * sizeof(uint32_t), + __LINE__) == -1) + goto out; + ofs = CDF_GETUINT32(p, tail); q = (const uint8_t *)(const void *) ((const char *)(const void *)p + ofs - 2 * sizeof(uint32_t)); diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c index 1d5db8966..3dd07820a 100644 --- a/ext/fileinfo/libmagic/softmagic.c +++ b/ext/fileinfo/libmagic/softmagic.c @@ -915,10 +915,18 @@ mconvert(struct magic_set *ms, struct magic *m, int flip) return 1; } case FILE_PSTRING: { - char *ptr1 = p->s, *ptr2 = ptr1 + file_pstring_length_size(m); + size_t sz = file_pstring_length_size(m); + char *ptr1 = p->s, *ptr2 = ptr1 + sz; size_t len = file_pstring_get_length(m, ptr1); - if (len >= sizeof(p->s)) - len = sizeof(p->s) - 1; + if (len >= sizeof(p->s)) { + /* + * The size of the pascal string length (sz) + * is 1, 2, or 4. We need at least 1 byte for NUL + * termination, but we've already truncated the + * string by p->s, so we need to deduct sz. + */ + len = sizeof(p->s) - sz; + } while (len--) *ptr1++ = *ptr2++; *ptr1 = '\0'; diff --git a/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt b/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt index c9c45940b..958192704 100644 --- a/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt +++ b/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt @@ -37,6 +37,7 @@ libxml_set_external_entity_loader( ); $dd = new DOMDocument; +$dd->substituteEntities = true; $dd->resolveExternals = true; $r = $dd->loadXML($xml); var_dump($dd->validate()); diff --git a/ext/mbstring/libmbfl/cvsclean b/ext/mbstring/libmbfl/cvsclean deleted file mode 100755 index 60ae246a5..000000000 --- a/ext/mbstring/libmbfl/cvsclean +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -function cvsclean_sub() { - prev_pwd=`pwd` - cd $1 - cat .cvsignore | while read fname; do - rm -r -f $fname - done - cd "$prev_pwd" -} - -cvsclean_sub . -cvsclean_sub mbfl -cvsclean_sub filters -cvsclean_sub nls diff --git a/ext/mysqli/tests/bug33491.phpt b/ext/mysqli/tests/bug33491.phpt index 168ecb038..7e994bc4d 100644 --- a/ext/mysqli/tests/bug33491.phpt +++ b/ext/mysqli/tests/bug33491.phpt @@ -26,4 +26,4 @@ $DB->query_single('SELECT DATE()'); ?> --EXPECTF-- -Fatal error: Call to a member function fetch_row() on a non-object in %sbug33491.php on line %d +Fatal error: Call to a member function fetch_row() on boolean in %sbug33491.php on line %d diff --git a/ext/mysqli/tests/mysqli_change_user_new.phpt b/ext/mysqli/tests/mysqli_change_user_new.phpt index a87afa84a..e16895766 100644 --- a/ext/mysqli/tests/mysqli_change_user_new.phpt +++ b/ext/mysqli/tests/mysqli_change_user_new.phpt @@ -41,4 +41,4 @@ Warning: mysqli_query(): MySQL server has gone away in %s on line %d Warning: mysqli_query(): Error reading result set's header in %s on line %d [003] [2006] MySQL server has gone away -Fatal error: Call to a member function fetch_assoc() on a non-object in %s on line %d
\ No newline at end of file +Fatal error: Call to a member function fetch_assoc() on %s in %s on line %d
\ No newline at end of file diff --git a/ext/mysqli/tests/table.inc b/ext/mysqli/tests/table.inc index aa1207af4..cb089bb95 100644 --- a/ext/mysqli/tests/table.inc +++ b/ext/mysqli/tests/table.inc @@ -12,7 +12,7 @@ if (!mysqli_query($link, 'DROP TABLE IF EXISTS test')) { exit(1); } -if (!mysqli_query($link, 'CREATE TABLE test(id INT, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine)) { +if (!mysqli_query($link, 'CREATE TABLE test(id INT DEFAULT 0, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine)) { printf("Failed to create test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link)); exit(1); } diff --git a/ext/mysqlnd/mysqlnd_charset.c b/ext/mysqlnd/mysqlnd_charset.c index c2f2b8890..dfa90db25 100644 --- a/ext/mysqlnd/mysqlnd_charset.c +++ b/ext/mysqlnd/mysqlnd_charset.c @@ -418,20 +418,60 @@ static uint mysqlnd_mbcharlen_utf16(unsigned int utf16) /* {{{ utf32 functions */ -static uint -check_mb_utf32(const char *start __attribute((unused)), const char *end __attribute((unused))) +static unsigned int check_mb_utf32(const char *start __attribute((unused)), const char *end __attribute((unused))) { return 4; } -static uint -mysqlnd_mbcharlen_utf32(unsigned int utf32 __attribute((unused))) +static unsigned int mysqlnd_mbcharlen_utf32(unsigned int utf32 __attribute((unused))) { return 4; } /* }}} */ + +/* {{{ gb18030 functions */ +#define is_gb18030_odd(c) (0x81 <= (zend_uchar) (c) && (zend_uchar) (c) <= 0xFE) +#define is_gb18030_even_2(c) ((0x40 <= (zend_uchar) (c) && (zend_uchar) (c) <= 0x7E) || (0x80 <= (zend_uchar) (c) && (zend_uchar) (c) <= 0xFE)) +#define is_gb18030_even_4(c) (0x30 <= (zend_uchar) (c) && (zend_uchar) (c) <= 0x39) + + +static unsigned int mysqlnd_mbcharlen_gb18030(unsigned int c) +{ + if (c <= 0xFF) { + return !is_gb18030_odd(c); + } + if (c > 0xFFFF || !is_gb18030_odd((c >> 8) & 0xFF)) { + return 0; + } + if (is_gb18030_even_2((c & 0xFF))) { + return 2; + } + if (is_gb18030_even_4((c & 0xFF))) { + return 4; + } + + return 0; +} + + +static unsigned int my_ismbchar_gb18030(const char * start, const char * end) +{ + if (end - start <= 1 || !is_gb18030_odd(start[0])) { + return 0; + } + + if (is_gb18030_even_2(start[1])) { + return 2; + } else if (end - start > 3 && is_gb18030_even_4(start[1]) && is_gb18030_odd(start[2]) && is_gb18030_even_4(start[3])) { + return 4; + } + + return 0; +} +/* }}} */ + /* The server compiles sometimes the full utf-8 (the mb4) as utf8m4, and the old as utf8, for BC reasons. Sometimes, utf8mb4 is just utf8 but the old charsets are utf8mb3. @@ -643,6 +683,8 @@ const MYSQLND_CHARSET mysqlnd_charsets[] = { 245, UTF8_MB4, UTF8_MB4"_croatian_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid}, { 246, UTF8_MB4, UTF8_MB4"_unicode_520_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid}, { 247, UTF8_MB4, UTF8_MB4"_vietnamese_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid}, + { 248, "gb18030", "gb18030_chinese_ci", 1, 4, "", mysqlnd_mbcharlen_gb18030, my_ismbchar_gb18030}, + { 249, "gb18030", "gb18030_bin", 1, 4, "", mysqlnd_mbcharlen_gb18030, my_ismbchar_gb18030}, { 254, UTF8_MB3, UTF8_MB3"_general_cs", 1, 3, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid}, { 0, NULL, NULL, 0, 0, NULL, NULL, NULL} diff --git a/ext/oci8/LICENSE b/ext/oci8/LICENSE index 42536af32..6059c80e1 100644 --- a/ext/oci8/LICENSE +++ b/ext/oci8/LICENSE @@ -1,6 +1,6 @@ -------------------------------------------------------------------- The PHP License, version 3.01 -Copyright (c) 1999 - 2012 The PHP Group. All rights reserved. +Copyright (c) 1999 - 2014 The PHP Group. All rights reserved. -------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 8badbf7e0..0d9b9564d 100755 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -708,7 +708,7 @@ static time_t asn1_time_to_time_t(ASN1_UTCTIME * timestr TSRMLS_DC) /* {{{ */ char * thestr; long gmadjust = 0; - if (ASN1_STRING_type(timestr) != V_ASN1_UTCTIME) { + if (ASN1_STRING_type(timestr) != V_ASN1_UTCTIME && ASN1_STRING_type(timestr) != V_ASN1_GENERALIZEDTIME) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "illegal ASN1 data type for timestamp"); return (time_t)-1; } @@ -723,6 +723,11 @@ static time_t asn1_time_to_time_t(ASN1_UTCTIME * timestr TSRMLS_DC) /* {{{ */ return (time_t)-1; } + if (ASN1_STRING_type(timestr) == V_ASN1_GENERALIZEDTIME && ASN1_STRING_length(timestr) < 15) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to parse time string %s correctly", timestr->data); + return (time_t)-1; + } + strbuf = estrdup((char *)ASN1_STRING_data(timestr)); memset(&thetime, 0, sizeof(thetime)); @@ -744,14 +749,21 @@ static time_t asn1_time_to_time_t(ASN1_UTCTIME * timestr TSRMLS_DC) /* {{{ */ *thestr = '\0'; thestr -= 2; thetime.tm_mon = atoi(thestr)-1; + *thestr = '\0'; - thestr -= 2; - thetime.tm_year = atoi(thestr); + if( ASN1_STRING_type(timestr) == V_ASN1_UTCTIME ) { + thestr -= 2; + thetime.tm_year = atoi(thestr); - if (thetime.tm_year < 68) { - thetime.tm_year += 100; + if (thetime.tm_year < 68) { + thetime.tm_year += 100; + } + } else if( ASN1_STRING_type(timestr) == V_ASN1_GENERALIZEDTIME ) { + thestr -= 4; + thetime.tm_year = atoi(thestr) - 1900; } + thetime.tm_isdst = -1; ret = mktime(&thetime); diff --git a/ext/openssl/tests/bug65698.crt b/ext/openssl/tests/bug65698.crt new file mode 100644 index 000000000..c4a026113 --- /dev/null +++ b/ext/openssl/tests/bug65698.crt @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEsTCCA5mgAwIBAgIQdwrGwrpRpBwdXS+ZsmsMGjANBgkqhkiG9w0BAQUFADA+ +MQswCQYDVQQGEwJQTDEbMBkGA1UEChMSVW5pemV0byBTcC4geiBvLm8uMRIwEAYD +VQQDEwlDZXJ0dW0gQ0EwIhgPMjAwOTAzMDMxMjUzMThaGA8yMDI0MDMwMzEyNTMx +OFowdzELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVz +IFMuQS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEb +MBkGA1UEAxMSQ2VydHVtIExldmVsIElJIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4LE0Ixw8h5Lper9tHVtZkWIujxYsPVgUZABeZZgQsKTdJjaG +VP64B/oiEV5Hd3AxRqaZ7dRRsf4Pg/PSS/2mHRQQ/SH3XACbrDHmucDvYgtU/WoZ +yp9d6PXVPY4j7J5t/52s+EbZD5swSuQLGjZ9iwg9sXX3JdJ9Ty+B3z80oiajpK0B +wqAxrcX3DekEOknj7LkAOK6iuQKI85REj4IVb9kD7KKIWdISGbfL4Ezh/TP51e0L +/WhTJ7lHbHbRzFfPU/oi3Qyt5tEexrPKe+6N+Jrejdb5Ya7Ne3tKujDU7KlbO+dn +pzFH7VHkBPJcQJ7QUrprPaqVsVg3JJ1PXTqVnwIDAQABo4IBbDCCAWgwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUgGIR3sBrpxDhCPBVtDCDv/qPCGAwUgYDVR0j +BEswSaFCpEAwPjELMAkGA1UEBhMCUEwxGzAZBgNVBAoTElVuaXpldG8gU3AuIHog +by5vLjESMBAGA1UEAxMJQ2VydHVtIENBggMBACAwDgYDVR0PAQH/BAQDAgEGMCwG +A1UdHwQlMCMwIaAfoB2GG2h0dHA6Ly9jcmwuY2VydHVtLnBsL2NhLmNybDBoBggr +BgEFBQcBAQRcMFowKAYIKwYBBQUHMAGGHGh0dHA6Ly9zdWJjYS5vY3NwLWNlcnR1 +bS5jb20wLgYIKwYBBQUHMAKGImh0dHA6Ly9yZXBvc2l0b3J5LmNlcnR1bS5wbC9j +YS5jZXIwOgYDVR0gBDMwMTAvBgRVHSAAMCcwJQYIKwYBBQUHAgEWGWh0dHBzOi8v +d3d3LmNlcnR1bS5wbC9DUFMwDQYJKoZIhvcNAQEFBQADggEBAI/jSDAW/w9qLzF6 +4oQiIRB7dGKp2Nlj27xZFYDBRINn4DKyZExkpanASF2of9eEzvrS+qoDY29mhXCi +MkiGr0vCsVhn0ReUpjg4Z5SsiQhZ2BGSjXiOJgaDI7Dw1MH7Ru6jdfSbLyd97EFj +ER0ERGdrcA2kLw7KfQm78IkClXEEKjKnAUTn1d/5Y4UuBWDCEL0FLgO9AqNXEzIy +rlXVGIs73kdefAK+Z1T6dm83vUrDMyzemWNRBI2tVBujkN6zkaF6uPjE4hfoIkEQ +Z4317byFkG4mxjATU+tQLG1Bs88HUAOrxtJOo/WoeCNsFJaxbYPt4oQGxIVYdz29 +OUX9CQA= +-----END CERTIFICATE----- diff --git a/ext/openssl/tests/bug65698.phpt b/ext/openssl/tests/bug65698.phpt new file mode 100644 index 000000000..35d31764d --- /dev/null +++ b/ext/openssl/tests/bug65698.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #65689 (GeneralizedTime format parsing) +--SKIPIF-- +<?php +if (!extension_loaded("openssl")) die("skip"); +?> +--FILE-- +<?php +$crt = substr(__FILE__, 0, -4).'.crt'; +$info = openssl_x509_parse("file://$crt"); +var_dump($info["validFrom"], $info["validFrom_time_t"], $info["validTo"], $info["validTo_time_t"]); +?> +Done +--EXPECTF-- +string(15) "20090303125318Z" +int(1236084798) +string(15) "20240303125318Z" +int(1709470398) +Done diff --git a/ext/openssl/tests/cve-2013-6420.phpt b/ext/openssl/tests/cve-2013-6420.phpt index 87c0210b2..ccead0aab 100644 --- a/ext/openssl/tests/cve-2013-6420.phpt +++ b/ext/openssl/tests/cve-2013-6420.phpt @@ -12,7 +12,7 @@ var_dump($info['issuer']['emailAddress'], $info["validFrom_time_t"]); ?> Done --EXPECTF-- -%s openssl_x509_parse(): illegal ASN1 data type for timestamp in %s%ecve-2013-6420.php on line 3 +%s openssl_x509_parse(): illegal length in timestamp in %s%ecve-2013-6420.php on line 3 string(27) "stefan.esser@sektioneins.de" int(-1) Done diff --git a/ext/openssl/tests/openssl_spki_verify.phpt b/ext/openssl/tests/openssl_spki_verify.phpt index 1ee573fd3..52dc8e204 100644 --- a/ext/openssl/tests/openssl_spki_verify.phpt +++ b/ext/openssl/tests/openssl_spki_verify.phpt @@ -17,9 +17,7 @@ $ksize = array('1024'=>1024, '4096'=>4096); /* array of available hashings to test */ -$algo = array('md4'=>OPENSSL_ALGO_MD4, - 'md5'=>OPENSSL_ALGO_MD5, - 'sha1'=>OPENSSL_ALGO_SHA1, +$algo = array('sha1'=>OPENSSL_ALGO_SHA1, 'sha224'=>OPENSSL_ALGO_SHA224, 'sha256'=>OPENSSL_ALGO_SHA256, 'sha384'=>OPENSSL_ALGO_SHA384, @@ -90,16 +88,4 @@ bool(false) bool(true) bool(false) bool(true) -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -bool(true) bool(false)
\ No newline at end of file diff --git a/ext/pdo/pdo_sql_parser.re b/ext/pdo/pdo_sql_parser.re index fa8ef187f..9f6a6a736 100644 --- a/ext/pdo/pdo_sql_parser.re +++ b/ext/pdo/pdo_sql_parser.re @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt index 42c3d074a..224684b87 100644 --- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt +++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt @@ -93,4 +93,4 @@ array(1) { Warning: PDO::prepare(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'unknown_column' in 'field list' in %s on line %d -Fatal error: Call to a member function execute() on a non-object in %s on line %d
\ No newline at end of file +Fatal error: Call to a member function execute() on boolean in %s on line %d diff --git a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt index 90cedef56..b7b0ab629 100644 --- a/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt +++ b/ext/pdo_mysql/tests/pdo_mysql_prepare_native_mixed_style.phpt @@ -36,4 +36,4 @@ Warning: PDO::prepare(): SQLSTATE[HY093]: Invalid parameter number: mixed named Warning: PDO::prepare(): SQLSTATE[HY093]: Invalid parameter number in %s on line %d -Fatal error: Call to a member function execute() on a non-object in %s on line %d
\ No newline at end of file +Fatal error: Call to a member function execute() on boolean in %s on line %d diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt index 4d59e8c3b..c16ce5dd1 100644 --- a/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt +++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_errorcode.phpt @@ -56,4 +56,4 @@ Testing native PS... Warning: PDO::prepare(): SQLSTATE[42S02]: Base table or view not found: 1146 Table '%s.ihopeitdoesnotexist' doesn't exist in %s on line %d -Fatal error: Call to a member function execute() on a non-object in %s on line %d
\ No newline at end of file +Fatal error: Call to a member function execute() on boolean in %s on line %d diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt index 91b5237ea..56c37c5f1 100644 --- a/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt +++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_multiquery.phpt @@ -99,4 +99,4 @@ Native Prepared Statements... Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%SSELECT label FROM test ORDER BY id ASC LIMIT 1' at line %d in %s on line %d -Fatal error: Call to a member function errorInfo() on a non-object in %s on line %d +Fatal error: Call to a member function errorInfo() on boolean in %s on line %d diff --git a/ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt b/ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt index eeaf8d382..368464e13 100644 --- a/ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt +++ b/ext/reflection/tests/ReflectionFunction_isClosure_basic.phpt @@ -13,6 +13,6 @@ if (!extension_loaded('reflection') || !defined('PHP_VERSION_ID') || PHP_VERSION <?php $closure = function($param) { return "this is a closure"; }; $rc = new ReflectionFunction($closure); -echo var_dump($rc->isClosure()); +var_dump($rc->isClosure()); --EXPECTF-- bool(true) diff --git a/ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt b/ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt index 31d37a85f..4148fada0 100644 --- a/ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt +++ b/ext/reflection/tests/ReflectionFunction_isDeprecated_basic.phpt @@ -10,6 +10,6 @@ if (!extension_loaded('reflection') || !defined('PHP_VERSION_ID') || PHP_VERSION --FILE-- <?php $rc = new ReflectionFunction('ereg'); -echo var_dump($rc->isDeprecated()); +var_dump($rc->isDeprecated()); --EXPECTF-- bool(true) diff --git a/ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt b/ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt index c71b96b8e..30189cf4d 100644 --- a/ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt +++ b/ext/reflection/tests/ReflectionFunction_isDisabled_basic.phpt @@ -12,6 +12,6 @@ disable_functions=is_file --FILE-- <?php $rc = new ReflectionFunction('is_file'); -echo var_dump($rc->isDisabled()); +var_dump($rc->isDisabled()); --EXPECTF-- bool(true) diff --git a/ext/soap/soap.c b/ext/soap/soap.c index a8c6cb936..32bf5ca6f 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -225,6 +225,7 @@ PHP_METHOD(SoapClient, __getFunctions); PHP_METHOD(SoapClient, __getTypes); PHP_METHOD(SoapClient, __doRequest); PHP_METHOD(SoapClient, __setCookie); +PHP_METHOD(SoapClient, __getCookies); PHP_METHOD(SoapClient, __setLocation); PHP_METHOD(SoapClient, __setSoapHeaders); @@ -368,6 +369,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_soapclient___setcookie, 0, 0, 1) ZEND_ARG_INFO(0, value) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_INFO(arginfo_soapclient___getcookies, 0) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_INFO_EX(arginfo_soapclient___setsoapheaders, 0, 0, 1) ZEND_ARG_INFO(0, soapheaders) ZEND_END_ARG_INFO() @@ -422,6 +426,7 @@ static const zend_function_entry soap_client_functions[] = { PHP_ME(SoapClient, __getTypes, arginfo_soapclient___gettypes, 0) PHP_ME(SoapClient, __doRequest, arginfo_soapclient___dorequest, 0) PHP_ME(SoapClient, __setCookie, arginfo_soapclient___setcookie, 0) + PHP_ME(SoapClient, __getCookies, arginfo_soapclient___getcookies, 0) PHP_ME(SoapClient, __setLocation, arginfo_soapclient___setlocation, 0) PHP_ME(SoapClient, __setSoapHeaders, arginfo_soapclient___setsoapheaders, 0) PHP_FE_END @@ -3150,6 +3155,24 @@ PHP_METHOD(SoapClient, __setCookie) } /* }}} */ +/* {{{ proto array SoapClient::__getCookies ( void ) + Returns list of cookies */ +PHP_METHOD(SoapClient, __getCookies) +{ + zval **cookies, *tmp; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + array_init(return_value); + + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) != FAILURE) { + zend_hash_copy(Z_ARRVAL_P(return_value), Z_ARRVAL_P(*cookies), (copy_ctor_func_t) zval_add_ref, (void *)&tmp, sizeof(zval*)); + } +} +/* }}} */ + /* {{{ proto void SoapClient::__setSoapHeaders(array SoapHeaders) Sets SOAP headers for subsequent calls (replaces any previous values). diff --git a/ext/soap/tests/bug49898.phpt b/ext/soap/tests/bug49898.phpt new file mode 100644 index 000000000..eea4ea490 --- /dev/null +++ b/ext/soap/tests/bug49898.phpt @@ -0,0 +1,14 @@ +--TEST-- +Test for bug #49898: SoapClient::__getCookies() implementation +--CREDITS-- +Boro Sitnikovski <buritomath@yahoo.com> +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +$client = new SoapClient(null, array('uri' => 'mo:http://www.w3.org/', 'location' => 'http://some.url')); +$client->__setCookie("CookieTest", "HelloWorld"); +var_dump($client->__getCookies()['CookieTest'][0]); +?> +--EXPECT-- +string(10) "HelloWorld" diff --git a/ext/sockets/sendrecvmsg.c b/ext/sockets/sendrecvmsg.c index d9a819073..1d9cc78e7 100644 --- a/ext/sockets/sendrecvmsg.c +++ b/ext/sockets/sendrecvmsg.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2012 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/sockets/windows_common.h b/ext/sockets/windows_common.h index 3a9cb5912..9cc01ae12 100644 --- a/ext/sockets/windows_common.h +++ b/ext/sockets/windows_common.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2012 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index f450e0b71..4191b0db0 100644 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -402,7 +402,7 @@ static zval *spl_array_read_dimension_ex(int check_inherited, zval *object, zval /* When in a write context, * ZE has to be fooled into thinking this is in a reference set * by separating (if necessary) and returning as an is_ref=1 zval (even if refcount == 1) */ - if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) && !Z_ISREF_PP(ret)) { + if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) && !Z_ISREF_PP(ret) && ret != &EG(uninitialized_zval_ptr)) { if (Z_REFCOUNT_PP(ret) > 1) { zval *newval; @@ -1749,7 +1749,6 @@ SPL_METHOD(Array, unserialize) } if (buf_len == 0) { - zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "Empty serialized string cannot be empty"); return; } diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c index 772d780e0..fb88f5890 100644 --- a/ext/spl/spl_dllist.c +++ b/ext/spl/spl_dllist.c @@ -1192,7 +1192,6 @@ SPL_METHOD(SplDoublyLinkedList, unserialize) } if (buf_len == 0) { - zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "Serialized string cannot be empty"); return; } diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c index 91830ab00..57ddf492d 100644 --- a/ext/spl/spl_observer.c +++ b/ext/spl/spl_observer.c @@ -831,7 +831,6 @@ SPL_METHOD(SplObjectStorage, unserialize) } if (buf_len == 0) { - zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "Empty serialized string cannot be empty"); return; } diff --git a/ext/spl/tests/ArrayObject_unserialize_empty_string.phpt b/ext/spl/tests/ArrayObject_unserialize_empty_string.phpt index 75d8a4132..4c446c82b 100644 --- a/ext/spl/tests/ArrayObject_unserialize_empty_string.phpt +++ b/ext/spl/tests/ArrayObject_unserialize_empty_string.phpt @@ -1,5 +1,5 @@ --TEST-- -ArrayObject: test that you cannot unserialize a empty string +ArrayObject: test that you can unserialize a empty string --CREDITS-- Havard Eide <nucleuz@gmail.com> #PHPTestFest2009 Norway 2009-06-09 \o/ @@ -8,9 +8,6 @@ Havard Eide <nucleuz@gmail.com> $a = new ArrayObject(array()); $a->unserialize(""); ?> +Done --EXPECTF-- -Fatal error: Uncaught exception 'UnexpectedValueException' with message 'Empty serialized string cannot be empty' in %s.php:%d -Stack trace: -#0 %s(%d): ArrayObject->unserialize('') -#1 {main} - thrown in %s.php on line %d +Done diff --git a/ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt b/ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt index 4c2dd75e1..617f85e63 100644 --- a/ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt +++ b/ext/spl/tests/SplObjectStorage_unserialize_invalid_parameter3.phpt @@ -1,5 +1,5 @@ --TEST-- -Check that SplObjectStorage::unserialize throws exception when NULL passed +Check that SplObjectStorage::unserialize doesn't throws exception when NULL passed --CREDITS-- PHPNW Testfest 2009 - Simon Westcott (swestcott@gmail.com) --FILE-- @@ -14,6 +14,6 @@ try { } ?> +Done --EXPECTF-- -Empty serialized string cannot be empty - +Done diff --git a/ext/spl/tests/bug66127.phpt b/ext/spl/tests/bug66127.phpt new file mode 100644 index 000000000..b5d1dcac4 --- /dev/null +++ b/ext/spl/tests/bug66127.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #66127 (Segmentation fault with ArrayObject unset) +--INI-- +error_reporting = E_ALL & ~E_NOTICE +--FILE-- +<?php +function crash() +{ + set_error_handler(function () {}); + $var = 1; + trigger_error('error'); + $var2 = $var; + $var3 = $var; + trigger_error('error'); +} + +$items = new ArrayObject(); + +unset($items[0]); +unset($items[0][0]); +crash(); +echo "Worked!\n"; +?> +--EXPECT-- +Worked! diff --git a/ext/spl/tests/iterator_035.phpt b/ext/spl/tests/iterator_035.phpt index 9ce098b69..fc0271e38 100644 --- a/ext/spl/tests/iterator_035.phpt +++ b/ext/spl/tests/iterator_035.phpt @@ -12,4 +12,6 @@ $a[] = &$tmp; echo "Done\n"; ?> --EXPECTF-- +Notice: Indirect modification of overloaded element of ArrayIterator has no effect in %s on line %d + Fatal error: Cannot assign by reference to overloaded object in %s on line %d diff --git a/ext/spl/tests/unserialize.phpt b/ext/spl/tests/unserialize.phpt new file mode 100644 index 000000000..3232b7967 --- /dev/null +++ b/ext/spl/tests/unserialize.phpt @@ -0,0 +1,43 @@ +--TEST-- +SPL: unserialize with no data (for PHPUnit) +--FILE-- +<?php + +$types = array('SplDoublyLinkedList', 'SplObjectStorage', 'ArrayObject'); + +foreach ($types as $type) { + // serialize an empty new object + $exp = serialize(new $type()); + // hack to instanciate an object without constructor + $str = sprintf('C:%d:"%s":0:{}', strlen($type), $type); + $obj = unserialize($str); + var_dump($obj); + // serialize result + $out = serialize($obj); + // both should match + var_dump($exp === $out); +} +?> +===DONE=== +--EXPECTF-- +object(SplDoublyLinkedList)#%d (2) { + ["flags":"SplDoublyLinkedList":private]=> + int(0) + ["dllist":"SplDoublyLinkedList":private]=> + array(0) { + } +} +bool(true) +object(SplObjectStorage)#%d (1) { + ["storage":"SplObjectStorage":private]=> + array(0) { + } +} +bool(true) +object(ArrayObject)#%d (1) { + ["storage":"ArrayObject":private]=> + array(0) { + } +} +bool(true) +===DONE=== diff --git a/ext/standard/array.c b/ext/standard/array.c index 4f9833103..cbcaaf5b8 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -342,8 +342,7 @@ PHP_FUNCTION(count) RETVAL_LONG(Z_LVAL_P(retval)); zval_ptr_dtor(&retval); } - zval_dtor(mode_zv); - efree(mode_zv); + zval_ptr_dtor(&mode_zv); return; } #endif diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index e525ff2a8..69e20fdd9 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -2648,7 +2648,6 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_unserialize, 0, 0, 1) ZEND_ARG_INFO(0, variable_representation) - ZEND_ARG_INFO(1, consumed) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_memory_get_usage, 0, 0, 0) @@ -4043,92 +4042,91 @@ PHP_FUNCTION(putenv) { char *setting; int setting_len; + char *p, **env; + putenv_entry pe; +#ifdef PHP_WIN32 + char *value = NULL; + int equals = 0; + int error_code; +#endif if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &setting, &setting_len) == FAILURE) { return; } + + if(setting_len == 0 || setting[0] == '=') { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter syntax"); + RETURN_FALSE; + } - if (setting_len) { - char *p, **env; - putenv_entry pe; + pe.putenv_string = estrndup(setting, setting_len); + pe.key = estrndup(setting, setting_len); + if ((p = strchr(pe.key, '='))) { /* nullify the '=' if there is one */ + *p = '\0'; #ifdef PHP_WIN32 - char *value = NULL; - int equals = 0; - int error_code; + equals = 1; #endif + } - pe.putenv_string = estrndup(setting, setting_len); - pe.key = estrndup(setting, setting_len); - if ((p = strchr(pe.key, '='))) { /* nullify the '=' if there is one */ - *p = '\0'; -#ifdef PHP_WIN32 - equals = 1; -#endif - } - - pe.key_len = strlen(pe.key); + pe.key_len = strlen(pe.key); #ifdef PHP_WIN32 - if (equals) { - if (pe.key_len < setting_len - 1) { - value = p + 1; - } else { - /* empty string*/ - value = p; - } + if (equals) { + if (pe.key_len < setting_len - 1) { + value = p + 1; + } else { + /* empty string*/ + value = p; } + } #endif - zend_hash_del(&BG(putenv_ht), pe.key, pe.key_len+1); + zend_hash_del(&BG(putenv_ht), pe.key, pe.key_len+1); - /* find previous value */ - pe.previous_value = NULL; - for (env = environ; env != NULL && *env != NULL; env++) { - if (!strncmp(*env, pe.key, pe.key_len) && (*env)[pe.key_len] == '=') { /* found it */ + /* find previous value */ + pe.previous_value = NULL; + for (env = environ; env != NULL && *env != NULL; env++) { + if (!strncmp(*env, pe.key, pe.key_len) && (*env)[pe.key_len] == '=') { /* found it */ #if defined(PHP_WIN32) - /* must copy previous value because MSVCRT's putenv can free the string without notice */ - pe.previous_value = estrdup(*env); + /* must copy previous value because MSVCRT's putenv can free the string without notice */ + pe.previous_value = estrdup(*env); #else - pe.previous_value = *env; + pe.previous_value = *env; #endif - break; - } + break; } + } #if HAVE_UNSETENV - if (!p) { /* no '=' means we want to unset it */ - unsetenv(pe.putenv_string); - } - if (!p || putenv(pe.putenv_string) == 0) { /* success */ + if (!p) { /* no '=' means we want to unset it */ + unsetenv(pe.putenv_string); + } + if (!p || putenv(pe.putenv_string) == 0) { /* success */ #else # ifndef PHP_WIN32 - if (putenv(pe.putenv_string) == 0) { /* success */ + if (putenv(pe.putenv_string) == 0) { /* success */ # else - error_code = SetEnvironmentVariable(pe.key, value); + error_code = SetEnvironmentVariable(pe.key, value); # if _MSC_VER < 1500 - /* Yet another VC6 bug, unset may return env not found */ - if (error_code != 0 || - (error_code == 0 && GetLastError() == ERROR_ENVVAR_NOT_FOUND)) { + /* Yet another VC6 bug, unset may return env not found */ + if (error_code != 0 || + (error_code == 0 && GetLastError() == ERROR_ENVVAR_NOT_FOUND)) { # else - if (error_code != 0) { /* success */ + if (error_code != 0) { /* success */ # endif # endif #endif - zend_hash_add(&BG(putenv_ht), pe.key, pe.key_len + 1, (void **) &pe, sizeof(putenv_entry), NULL); + zend_hash_add(&BG(putenv_ht), pe.key, pe.key_len + 1, (void **) &pe, sizeof(putenv_entry), NULL); #ifdef HAVE_TZSET - if (!strncmp(pe.key, "TZ", pe.key_len)) { - tzset(); - } -#endif - RETURN_TRUE; - } else { - efree(pe.putenv_string); - efree(pe.key); - RETURN_FALSE; + if (!strncmp(pe.key, "TZ", pe.key_len)) { + tzset(); } +#endif + RETURN_TRUE; + } else { + efree(pe.putenv_string); + efree(pe.key); + RETURN_FALSE; } - - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter syntax"); - RETURN_FALSE; } /* }}} */ #endif diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 6a894467f..214a7dc7e 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -517,6 +517,10 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int while (ll < dlen) { n = cp[ll]; + if ((ll + n) >= dlen) { + // Invalid chunk length, truncate + n = dlen - (ll + 1); + } memcpy(tp + ll , cp + ll + 1, n); add_next_index_stringl(entries, cp + ll + 1, n, 1); ll = ll + n + 1; diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c index 73776ff0b..1b8d505a4 100644 --- a/ext/standard/http_fopen_wrapper.c +++ b/ext/standard/http_fopen_wrapper.c @@ -752,10 +752,11 @@ finish: SEPARATE_ZVAL(tmpzval); convert_to_long_ex(tmpzval); follow_location = Z_LVAL_PP(tmpzval); - } else if (!(response_code >= 300 && response_code < 304 || 307 == response_code)) { + } else if (!(response_code >= 300 && response_code < 304 || 307 == response_code || 308 == response_code)) { /* we shouldn't redirect automatically if follow_location isn't set and response_code not in (300, 301, 302, 303 and 307) - see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.1 */ + see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.1 + RFC 7238 defines 308: http://tools.ietf.org/html/rfc7238 */ follow_location = 0; } strlcpy(location, http_header_line + 10, sizeof(location)); diff --git a/ext/standard/tests/general_functions/header_redirection_001.phpt b/ext/standard/tests/general_functions/header_redirection_001.phpt new file mode 100644 index 000000000..ecf57ec54 --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_001.phpt @@ -0,0 +1,11 @@ +--TEST-- +Location: headers change the status code +--CGI-- +--FILE-- +<?php +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 302 Moved Temporarily +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_002.phpt b/ext/standard/tests/general_functions/header_redirection_002.phpt new file mode 100644 index 000000000..2bf6dec51 --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_002.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers override non-201 and 3xx response codes +--CGI-- +--FILE-- +<?php +header("HTTP/1.1 418 I'm a Teapot"); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 302 Moved Temporarily +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_003.phpt b/ext/standard/tests/general_functions/header_redirection_003.phpt new file mode 100644 index 000000000..678e3143a --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_003.phpt @@ -0,0 +1,11 @@ +--TEST-- +Location: headers respect the header() response code parameter +--CGI-- +--FILE-- +<?php +header('Location: http://example.com/', true, 404); +?> +--EXPECTHEADERS-- +Status: 404 Not Found +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_004.phpt b/ext/standard/tests/general_functions/header_redirection_004.phpt new file mode 100644 index 000000000..678e3143a --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_004.phpt @@ -0,0 +1,11 @@ +--TEST-- +Location: headers respect the header() response code parameter +--CGI-- +--FILE-- +<?php +header('Location: http://example.com/', true, 404); +?> +--EXPECTHEADERS-- +Status: 404 Not Found +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_005.phpt b/ext/standard/tests/general_functions/header_redirection_005.phpt new file mode 100644 index 000000000..fc3e0f7af --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_005.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 201 response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 201 Created'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 201 Created +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_006.phpt b/ext/standard/tests/general_functions/header_redirection_006.phpt new file mode 100644 index 000000000..5fb52096c --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_006.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 300 Multiple Choices response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 300 Multiple Choices'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 300 Multiple Choices +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_007.phpt b/ext/standard/tests/general_functions/header_redirection_007.phpt new file mode 100644 index 000000000..6769b080f --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_007.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 301 Moved Permanently response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 301 Moved Permanently'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 301 Moved Permanently +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_008.phpt b/ext/standard/tests/general_functions/header_redirection_008.phpt new file mode 100644 index 000000000..50993707c --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_008.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 302 Found response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 302 Found'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 302 Found +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_009.phpt b/ext/standard/tests/general_functions/header_redirection_009.phpt new file mode 100644 index 000000000..f8d27f9bf --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_009.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 303 See Other response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 303 See Other'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 303 See Other +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_010.phpt b/ext/standard/tests/general_functions/header_redirection_010.phpt new file mode 100644 index 000000000..316112dde --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_010.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 304 Not Modified response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 304 Not Modified'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 304 Not Modified +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_011.phpt b/ext/standard/tests/general_functions/header_redirection_011.phpt new file mode 100644 index 000000000..bfd878963 --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_011.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 305 Use Proxy response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 305 Use Proxy'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 305 Use Proxy +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_012.phpt b/ext/standard/tests/general_functions/header_redirection_012.phpt new file mode 100644 index 000000000..657028b09 --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_012.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 307 Temporary Redirect response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 307 Temporary Redirect'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 307 Temporary Redirect +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_013.phpt b/ext/standard/tests/general_functions/header_redirection_013.phpt new file mode 100644 index 000000000..4dce0d00f --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_013.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 308 Permanent Redirect response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 308 Permanent Redirect'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 308 Permanent Redirect +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/header_redirection_014.phpt b/ext/standard/tests/general_functions/header_redirection_014.phpt new file mode 100644 index 000000000..a5fb6e8fe --- /dev/null +++ b/ext/standard/tests/general_functions/header_redirection_014.phpt @@ -0,0 +1,12 @@ +--TEST-- +Location: headers do not override the 399 Choose Your Own Adventure response code +--CGI-- +--FILE-- +<?php +header('HTTP/1.1 399 Choose Your Own Adventure'); +header('Location: http://example.com/'); +?> +--EXPECTHEADERS-- +Status: 399 Choose Your Own Adventure +Location: http://example.com/ +--EXPECT-- diff --git a/ext/standard/tests/general_functions/putenv.phpt b/ext/standard/tests/general_functions/putenv.phpt index afe1badce..254207320 100644 --- a/ext/standard/tests/general_functions/putenv.phpt +++ b/ext/standard/tests/general_functions/putenv.phpt @@ -15,6 +15,9 @@ var_dump(getenv($var_name)); var_dump(putenv($var_name)); var_dump(getenv($var_name)); +var_dump(putenv("=123")); +var_dump(putenv("")); + echo "Done\n"; ?> --EXPECTF-- @@ -25,4 +28,10 @@ bool(true) string(0) "" bool(true) bool(false) + +Warning: putenv(): Invalid parameter syntax in %s on line %d +bool(false) + +Warning: putenv(): Invalid parameter syntax in %s on line %d +bool(false) Done diff --git a/ext/standard/tests/http/bug67430.phpt b/ext/standard/tests/http/bug67430.phpt new file mode 100644 index 000000000..d4474fdf5 --- /dev/null +++ b/ext/standard/tests/http/bug67430.phpt @@ -0,0 +1,49 @@ +--TEST-- +Bug #67430 (http:// wrapper doesn't follow 308 redirects) +--INI-- +allow_url_fopen=1 +--SKIPIF-- +<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?> +--FILE-- +<?php +require 'server.inc'; + +function do_test($follow) { + $options = [ + 'http' => [ + 'method' => 'POST', + 'follow_location' => $follow, + ], + ]; + + $ctx = stream_context_create($options); + + $responses = [ + "data://text/plain,HTTP/1.1 308\r\nLocation: /foo\r\n\r\n", + "data://text/plain,HTTP/1.1 200\r\nConnection: close\r\n\r\n", + ]; + $pid = http_server('tcp://127.0.0.1:12342', $responses, $output); + + $fd = fopen('http://127.0.0.1:12342/', 'rb', false, $ctx); + fseek($output, 0, SEEK_SET); + echo stream_get_contents($output); + + http_server_kill($pid); +} + +do_test(true); +do_test(false); + +?> +Done +--EXPECT-- +POST / HTTP/1.0 +Host: 127.0.0.1:12342 + +GET /foo HTTP/1.0 +Host: 127.0.0.1:12342 + +POST / HTTP/1.0 +Host: 127.0.0.1:12342 + +Done diff --git a/ext/standard/tests/serialize/serialization_error_001.phpt b/ext/standard/tests/serialize/serialization_error_001.phpt index c6c17512f..da6f50cc0 100644 --- a/ext/standard/tests/serialize/serialization_error_001.phpt +++ b/ext/standard/tests/serialize/serialization_error_001.phpt @@ -21,7 +21,7 @@ var_dump( unserialize() ); //Test serialize with one more than the expected number of arguments var_dump( serialize(1,2) ); -var_dump( unserialize(1,$x,2) ); +var_dump( unserialize(1,2) ); echo "Done"; ?> @@ -31,12 +31,12 @@ echo "Done"; Warning: serialize() expects exactly 1 parameter, 0 given in %s on line 16 NULL -Warning: unserialize() expects at least 1 parameter, 0 given in %s on line 17 +Warning: unserialize() expects exactly 1 parameter, 0 given in %s on line 17 bool(false) Warning: serialize() expects exactly 1 parameter, 2 given in %s on line 20 NULL -Warning: unserialize() expects at most 2 parameters, 3 given in %s on line 21 +Warning: unserialize() expects exactly 1 parameter, 2 given in %s on line 21 bool(false) Done diff --git a/ext/standard/tests/serialize/unserialize_consumed.phpt b/ext/standard/tests/serialize/unserialize_consumed.phpt deleted file mode 100644 index 6cc11e273..000000000 --- a/ext/standard/tests/serialize/unserialize_consumed.phpt +++ /dev/null @@ -1,27 +0,0 @@ ---TEST-- -Unserialization of partial strings ---FILE-- -<?php -$data = [123,4.56,true]; -$ser = serialize($data); -$serlen = strlen($ser); - -$unser = unserialize($ser, $consumed); -echo "Consume full string: "; -var_dump($serlen == $consumed); -echo "Return original data: "; -var_dump($unser === $data); - -$ser .= "junk\x01data"; -$unser = unserialize($ser, $consumed); -echo "Consume full string(junk): "; -var_dump($serlen == $consumed); -echo "Return original data(junk): "; -var_dump($unser === $data); - ---EXPECT-- -Consume full string: bool(true) -Return original data: bool(true) -Consume full string(junk): bool(true) -Return original data(junk): bool(true) - diff --git a/ext/standard/url_scanner_ex.re b/ext/standard/url_scanner_ex.re index ecacb76f9..70ee06eee 100644 --- a/ext/standard/url_scanner_ex.re +++ b/ext/standard/url_scanner_ex.re @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/standard/var.c b/ext/standard/var.c index 930edd687..457f31db3 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -943,7 +943,7 @@ PHP_FUNCTION(serialize) } /* }}} */ -/* {{{ proto mixed unserialize(string variable_representation[, int &consumed]) +/* {{{ proto mixed unserialize(string variable_representation) Takes a string representation of variable and recreates it */ PHP_FUNCTION(unserialize) { @@ -951,9 +951,8 @@ PHP_FUNCTION(unserialize) int buf_len; const unsigned char *p; php_unserialize_data_t var_hash; - zval *consumed = NULL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z", &buf, &buf_len, &consumed) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &buf, &buf_len) == FAILURE) { RETURN_FALSE; } @@ -972,11 +971,6 @@ PHP_FUNCTION(unserialize) RETURN_FALSE; } PHP_VAR_UNSERIALIZE_DESTROY(var_hash); - - if (consumed) { - zval_dtor(consumed); - ZVAL_LONG(consumed, ((char*)p) - buf); - } } /* }}} */ diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index eb1a90d1d..d7cc85367 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -3,7 +3,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index b3f5d29ca..3a1b91095 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/tokenizer/tests/bug67395.phpt b/ext/tokenizer/tests/bug67395.phpt new file mode 100644 index 000000000..c9b7f3012 --- /dev/null +++ b/ext/tokenizer/tests/bug67395.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug 67395: token_name() does not return name for T_POW and T_POW_EQUAL token +--FILE-- +<?php + +$powToken = token_get_all('<?php **')[1][0]; +var_dump(token_name($powToken)); + +$powEqualToken = token_get_all('<?php **=')[1][0]; +var_dump(token_name($powEqualToken)); + +?> +--EXPECT-- +string(5) "T_POW" +string(11) "T_POW_EQUAL" diff --git a/ext/tokenizer/tokenizer_data.c b/ext/tokenizer/tokenizer_data.c index dc48f040f..beb9ea8e5 100644 --- a/ext/tokenizer/tokenizer_data.c +++ b/ext/tokenizer/tokenizer_data.c @@ -39,6 +39,7 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) { REGISTER_LONG_CONSTANT("T_LOGICAL_AND", T_LOGICAL_AND, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_PRINT", T_PRINT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_YIELD", T_YIELD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_POW_EQUAL", T_POW_EQUAL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_SR_EQUAL", T_SR_EQUAL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_SL_EQUAL", T_SL_EQUAL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_XOR_EQUAL", T_XOR_EQUAL, CONST_CS | CONST_PERSISTENT); @@ -70,6 +71,7 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) { REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_POW", T_POW, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_NEW", T_NEW, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_EXIT", T_EXIT, CONST_CS | CONST_PERSISTENT); @@ -176,6 +178,7 @@ char *get_token_type_name(int token_type) case T_LOGICAL_AND: return "T_LOGICAL_AND"; case T_PRINT: return "T_PRINT"; case T_YIELD: return "T_YIELD"; + case T_POW_EQUAL: return "T_POW_EQUAL"; case T_SR_EQUAL: return "T_SR_EQUAL"; case T_SL_EQUAL: return "T_SL_EQUAL"; case T_XOR_EQUAL: return "T_XOR_EQUAL"; @@ -207,6 +210,7 @@ char *get_token_type_name(int token_type) case T_INT_CAST: return "T_INT_CAST"; case T_DEC: return "T_DEC"; case T_INC: return "T_INC"; + case T_POW: return "T_POW"; case T_CLONE: return "T_CLONE"; case T_NEW: return "T_NEW"; case T_EXIT: return "T_EXIT"; diff --git a/ext/zlib/tests/gzseek_basic2.phpt b/ext/zlib/tests/gzseek_basic2.phpt index 82d305d0f..8e037af13 100644 --- a/ext/zlib/tests/gzseek_basic2.phpt +++ b/ext/zlib/tests/gzseek_basic2.phpt @@ -24,7 +24,7 @@ gzclose($h); echo "\nreading the output file\n"; $h = gzopen($f, 'r'); echo gzread($h, strlen($str1))."\n"; -echo var_dump(bin2hex(gzread($h, 20))); +var_dump(bin2hex(gzread($h, 20))); echo gzread($h, strlen($str2))."\n"; gzclose($h); unlink($f); diff --git a/ext/zlib/tests/gzseek_variation1.phpt b/ext/zlib/tests/gzseek_variation1.phpt index b260783f1..8512b743b 100644 --- a/ext/zlib/tests/gzseek_variation1.phpt +++ b/ext/zlib/tests/gzseek_variation1.phpt @@ -20,7 +20,7 @@ gzwrite($h, $str2); gzclose($h); $h = gzopen($f, 'r'); echo gzread($h, strlen($str1))."\n"; -echo var_dump(bin2hex(gzread($h, 20))); +var_dump(bin2hex(gzread($h, 20))); echo gzread($h, strlen($str2))."\n"; gzclose($h); unlink($f); diff --git a/ext/zlib/tests/gzseek_variation4.phpt b/ext/zlib/tests/gzseek_variation4.phpt index 3d0cf67ce..529a01214 100644 --- a/ext/zlib/tests/gzseek_variation4.phpt +++ b/ext/zlib/tests/gzseek_variation4.phpt @@ -24,7 +24,7 @@ gzclose($h); echo "\nreading the output file\n"; $h = gzopen($f, 'r'); echo gzread($h, strlen($str1))."\n"; -echo var_dump(bin2hex(gzread($h, 20))); +var_dump(bin2hex(gzread($h, 20))); echo gzread($h, strlen($str2))."\n"; gzclose($h); unlink($f); diff --git a/ext/zlib/tests/gzseek_variation5.phpt b/ext/zlib/tests/gzseek_variation5.phpt index 93fb19fdb..11e491278 100644 --- a/ext/zlib/tests/gzseek_variation5.phpt +++ b/ext/zlib/tests/gzseek_variation5.phpt @@ -24,7 +24,7 @@ gzclose($h); echo "\nreading the output file\n"; $h = gzopen($f, 'r'); echo gzread($h, strlen($str1))."\n"; -echo var_dump(bin2hex(gzread($h, 20))); +var_dump(bin2hex(gzread($h, 20))); echo gzread($h, strlen($str2))."\n"; gzclose($h); unlink($f); |