Bug #78139 [Asn->Csd]: timezone_open accepts invalid timezone string argument

From: Date: Fri, 27 May 2022 13:44:53 +0000
Subject: Bug #78139 [Asn->Csd]: timezone_open accepts invalid timezone string argument
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-241607@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78139&edit=1 ID: 78139 Updated by: git@php.net Reported by: baby-luck at earthling dot net Summary: timezone_open accepts invalid timezone string argument -Status: Assigned +Status: Closed Type: Bug Package: Date/time related Operating System: Linux PHP Version: 7.2.19 Assigned To: derick Block user comment: N Private report: N New Comment: Automatic comment on behalf of derickr Revision: https://github.com/php/php-src/commit/d5e57268a9f516449f5253d825b728244a97f424 Log: Fixed bug #78139 (timezone_open accepts invalid timezone string argument). Previous Comments: ------------------------------------------------------------------------ [2022-05-20 15:24:30] derick@php.net https://github.com/php/php-src/pull/8596 ------------------------------------------------------------------------ [2019-06-12 17:31:19] baby-luck at earthling dot net Did not know C,X were military offsets, thanks. However, perhaps these qualify as a doc bug in themselves. The docs say "...an offset value (+0200)" with no suggestion at all that a set of military offsets are also supported (probably doesn't matter that they are case insensitive). Regarding a) or b)... I would agree with those options; for the record my preference would be heavily towards b). ------------------------------------------------------------------------ [2019-06-11 06:41:42] requinix@php.net "C" and "X" are valid timezones: military notation representing each hourly division from UTC+12 to UTC-12. Either a) this is a doc bug that it takes the first "word" in the string, or b) this is a code bug and timezone_open should use the whole string ------------------------------------------------------------------------ [2019-06-11 06:30:14] baby-luck at earthling dot net Description: ------------ timezone_open() accepts undocumented/nonsense/partial timezones. The docs say "One of the supported timezone names or an offset value" but accepts seemingly nonsense timezones without failure, and timezones found in the first non-whitespace block in the argument string. Test script: --------------- $tz = timezone_open("x UTC"); echo '"x UTC" = '; var_dump($tz); $tz = timezone_open("c"); echo '"c" = '; var_dump($tz); $tz = timezone_open("xx UTC"); echo '"xx UTC" = '; var_dump($tz); $tz = timezone_open("xUTC"); echo '"xUTC" = '; var_dump($tz); $tz = timezone_open("UTCx"); echo '"UTCx" = '; var_dump($tz); $tz = timezone_open("UTC xx"); echo '"UTC xx" = '; var_dump($tz); Expected result: ---------------- "x UTC" = bool(false) "c" = bool(false) "xx UTC" = bool(false) "xUTC" = bool(false) "UTCx" = bool(false) "UTC xx" = bool(false) Actual result: -------------- "x UTC" = object(DateTimeZone)#127 (2) { ["timezone_type"]=> int(2) ["timezone"]=> string(1) "X" } "c" = object(DateTimeZone)#128 (2) { ["timezone_type"]=> int(2) ["timezone"]=> string(1) "C" } "xx UTC" = bool(false) "xUTC" = bool(false) "UTCx" = bool(false) "UTC xx" = object(DateTimeZone)#128 (2) { ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=78139&edit=1

« previous php.bugs (#241607) next »