derick Tue Dec 20 19:54:10 2005 EDT Modified files: (Branch: PHP_5_1) /php-src NEWS /php-src/ext/date php_date.c /php-src/ext/date/lib parse_tz.c timelib.h /php-src/ext/date/tests date_default_timezone_get-1.phpt date_default_timezone_get-2.phpt date_default_timezone_set-1.phpt Log: - MFH: Fixed bug #35660 (AIX TZ variable format not understood, yields UTC timezone).
http://cvs.php.net/viewcvs.cgi/php-src/NEWS?r1=1.2027.2.309&r2=1.2027.2.310&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.309 php-src/NEWS:1.2027.2.310 --- php-src/NEWS:1.2027.2.309 Tue Dec 20 15:58:00 2005 +++ php-src/NEWS Tue Dec 20 19:54:10 2005 @@ -45,6 +45,8 @@ only). (Tony) - Fixed bug #35690 (pack() tries to allocate huge memory block when packing float values to strings). (Tony) +- Fixed bug #35660 (AIX TZ variable format not understood, yields UTC + timezone). (Derick) - Fixed bug #35655 (whitespace following end of heredoc is lost). (Ilia) - Fixed bug #35630 (strtotime() crashes on certain relative identifiers). (Ilia) http://cvs.php.net/viewcvs.cgi/php-src/ext/date/php_date.c?r1=1.43.2.32&r2=1.43.2.33&diff_format=u Index: php-src/ext/date/php_date.c diff -u php-src/ext/date/php_date.c:1.43.2.32 php-src/ext/date/php_date.c:1.43.2.33 --- php-src/ext/date/php_date.c:1.43.2.32 Mon Dec 19 13:00:32 2005 +++ php-src/ext/date/php_date.c Tue Dec 20 19:54:10 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_date.c,v 1.43.2.32 2005/12/19 13:00:32 derick Exp $ */ +/* $Id: php_date.c,v 1.43.2.33 2005/12/20 19:54:10 derick Exp $ */ #include "php.h" #include "php_streams.h" @@ -99,7 +99,7 @@ static void date_register_classes(TSRMLS_D); #endif -static char* guess_timezone(TSRMLS_D); +static char* guess_timezone(timelib_tzdb *tzdb TSRMLS_DC); /* }}} */ ZEND_DECLARE_MODULE_GLOBALS(date) @@ -225,7 +225,9 @@ #define DATE_TZ_ERRMSG \ "It is not safe to rely on the system's timezone settings. Please use " \ "the date.timezone setting, the TZ environment variable or the " \ - "date_default_timezone_set() function. " + "date_default_timezone_set() function. In case you used any of those " \ + "methods and you are still getting this warning, you most likely " \ + "misspelled the timezone identifier. " /* {{{ PHP_MINIT_FUNCTION */ PHP_MINIT_FUNCTION(date) @@ -271,7 +273,7 @@ php_info_print_table_row(2, "date/time support", "enabled"); php_info_print_table_row(2, "Timezone Database Version", tzdb->version); php_info_print_table_row(2, "Timezone Database", php_date_global_timezone_db_enabled ? "external" : "internal"); - php_info_print_table_row(2, "Default timezone", guess_timezone(TSRMLS_C)); + php_info_print_table_row(2, "Default timezone", guess_timezone(tzdb TSRMLS_CC)); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); @@ -296,21 +298,21 @@ /* }}} */ /* {{{ Helper functions */ -static char* guess_timezone(TSRMLS_D) +static char* guess_timezone(timelib_tzdb *tzdb TSRMLS_DC) { char *env; /* Checking configure timezone */ - if (DATEG(timezone) && (strlen(DATEG(timezone)) > 0)) { + if (DATEG(timezone) && (strlen(DATEG(timezone)) > 0) && timelib_timezone_id_is_valid(DATEG(timezone), tzdb)) { return DATEG(timezone); } /* Check environment variable */ env = getenv("TZ"); - if (env && *env) { + if (env && *env && timelib_timezone_id_is_valid(env, tzdb)) { return env; } /* Check config setting for default timezone */ - if (DATEG(default_timezone) && (strlen(DATEG(default_timezone)) > 0)) { + if (DATEG(default_timezone) && (strlen(DATEG(default_timezone)) > 0) && timelib_timezone_id_is_valid(DATEG(default_timezone), tzdb)) { return DATEG(default_timezone); } #if HAVE_TM_ZONE @@ -376,15 +378,10 @@ char *tz; timelib_tzinfo *tzi; - tz = guess_timezone(TSRMLS_C); + tz = guess_timezone(DATE_TIMEZONEDB TSRMLS_CC); tzi = php_date_parse_tzfile(tz, DATE_TIMEZONEDB TSRMLS_CC); if (! tzi) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Timezone setting (date.timezone) or TZ environment variable contains an unknown timezone"); - tzi = php_date_parse_tzfile("UTC", DATE_TIMEZONEDB TSRMLS_CC); - - if (! tzi) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Timezone database is corrupt - this should *never* happen!"); - } + php_error_docref(NULL TSRMLS_CC, E_ERROR, "Timezone database is corrupt - this should *never* happen!"); } return tzi; } @@ -1633,6 +1630,10 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &zone, &zone_len) == FAILURE) { RETURN_FALSE; } + if (!timelib_timezone_id_is_valid(zone, DATE_TIMEZONEDB)) { + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Timezone ID '%s' is invalid", zone); + RETURN_FALSE; + } if (DATEG(timezone)) { efree(DATEG(timezone)); DATEG(timezone) = NULL; http://cvs.php.net/viewcvs.cgi/php-src/ext/date/lib/parse_tz.c?r1=1.20.2.2&r2=1.20.2.3&diff_format=u Index: php-src/ext/date/lib/parse_tz.c diff -u php-src/ext/date/lib/parse_tz.c:1.20.2.2 php-src/ext/date/lib/parse_tz.c:1.20.2.3 --- php-src/ext/date/lib/parse_tz.c:1.20.2.2 Mon Oct 3 11:17:24 2005 +++ php-src/ext/date/lib/parse_tz.c Tue Dec 20 19:54:10 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: parse_tz.c,v 1.20.2.2 2005/10/03 11:17:24 derick Exp $ */ +/* $Id: parse_tz.c,v 1.20.2.3 2005/12/20 19:54:10 derick Exp $ */ #include "timelib.h" @@ -238,6 +238,12 @@ return timezonedb_idx_builtin; } +int timelib_timezone_id_is_valid(char *timezone, timelib_tzdb *tzdb) +{ + char *tzf; + return (seek_to_tz_position((char**) &tzf, timezone, tzdb)); +} + timelib_tzinfo *timelib_parse_tzfile(char *timezone, timelib_tzdb *tzdb) { char *tzf; http://cvs.php.net/viewcvs.cgi/php-src/ext/date/lib/timelib.h?r1=1.10.2.7&r2=1.10.2.8&diff_format=u Index: php-src/ext/date/lib/timelib.h diff -u php-src/ext/date/lib/timelib.h:1.10.2.7 php-src/ext/date/lib/timelib.h:1.10.2.8 --- php-src/ext/date/lib/timelib.h:1.10.2.7 Mon Dec 19 13:00:37 2005 +++ php-src/ext/date/lib/timelib.h Tue Dec 20 19:54:10 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: timelib.h,v 1.10.2.7 2005/12/19 13:00:37 derick Exp $ */ +/* $Id: timelib.h,v 1.10.2.8 2005/12/20 19:54:10 derick Exp $ */ #ifndef __TIMELIB_H__ #define __TIMELIB_H__ @@ -67,6 +67,7 @@ void timelib_set_timezone(timelib_time *t, timelib_tzinfo *tz); /* From parse_tz.c */ +int timelib_timezone_id_is_valid(char *timezone, timelib_tzdb *tzdb); timelib_tzinfo *timelib_parse_tzfile(char *timezone, timelib_tzdb *tzdb); int timelib_timestamp_is_in_dst(timelib_sll ts, timelib_tzinfo *tz); timelib_time_offset *timelib_get_time_zone_info(timelib_sll ts, timelib_tzinfo *tz); http://cvs.php.net/viewcvs.cgi/php-src/ext/date/tests/date_default_timezone_get-1.phpt?r1=1.2.2.5&r2=1.2.2.6&diff_format=u Index: php-src/ext/date/tests/date_default_timezone_get-1.phpt diff -u php-src/ext/date/tests/date_default_timezone_get-1.phpt:1.2.2.5 php-src/ext/date/tests/date_default_timezone_get-1.phpt:1.2.2.6 --- php-src/ext/date/tests/date_default_timezone_get-1.phpt:1.2.2.5 Mon Dec 19 13:00:37 2005 +++ php-src/ext/date/tests/date_default_timezone_get-1.phpt Tue Dec 20 19:54:10 2005 @@ -9,8 +9,8 @@ echo date('e'), "\n"; ?> --EXPECTF-- -Strict Standards: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_get-1.php on line 3 +Strict Standards: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_get-1.php on line 3 UTC -Strict Standards: date(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_get-1.php on line 4 +Strict Standards: date(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_get-1.php on line 4 UTC http://cvs.php.net/viewcvs.cgi/php-src/ext/date/tests/date_default_timezone_get-2.phpt?r1=1.2.2.1&r2=1.2.2.2&diff_format=u Index: php-src/ext/date/tests/date_default_timezone_get-2.phpt diff -u php-src/ext/date/tests/date_default_timezone_get-2.phpt:1.2.2.1 php-src/ext/date/tests/date_default_timezone_get-2.phpt:1.2.2.2 --- php-src/ext/date/tests/date_default_timezone_get-2.phpt:1.2.2.1 Wed Oct 19 11:18:51 2005 +++ php-src/ext/date/tests/date_default_timezone_get-2.phpt Tue Dec 20 19:54:10 2005 @@ -8,5 +8,5 @@ echo date_default_timezone_get(), "\n"; ?> --EXPECTF-- -Notice: date_default_timezone_get(): Timezone setting (date.timezone) or TZ environment variable contains an unknown timezone in %sdate_default_timezone_get-2.php on line 3 +Strict Standards: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_get-2.php on line 3 UTC http://cvs.php.net/viewcvs.cgi/php-src/ext/date/tests/date_default_timezone_set-1.phpt?r1=1.1.2.7&r2=1.1.2.8&diff_format=u Index: php-src/ext/date/tests/date_default_timezone_set-1.phpt diff -u php-src/ext/date/tests/date_default_timezone_set-1.phpt:1.1.2.7 php-src/ext/date/tests/date_default_timezone_set-1.phpt:1.1.2.8 --- php-src/ext/date/tests/date_default_timezone_set-1.phpt:1.1.2.7 Mon Dec 19 13:00:37 2005 +++ php-src/ext/date/tests/date_default_timezone_set-1.phpt Tue Dec 20 19:54:10 2005 @@ -18,9 +18,9 @@ echo date(DATE_ISO8601, $date4), "\n"; ?> --EXPECTF-- -Strict Standards: strtotime(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_set-1.php on line 3 +Strict Standards: strtotime(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_set-1.php on line 3 -Strict Standards: strtotime(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_set-1.php on line 4 +Strict Standards: strtotime(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_set-1.php on line 4 America/Indiana/Knox 2005-01-12T03:00:00-0500 2005-07-12T03:00:00-0500
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php