diff options
| author | Derick Rethans <derick@php.net> | 2008-04-16 17:21:46 +0000 |
|---|---|---|
| committer | Derick Rethans <derick@php.net> | 2008-04-16 17:21:46 +0000 |
| commit | 8649483a6922c5d941315fa6034e5cd92609e522 (patch) | |
| tree | 5e2f271fec255bf752822bbe9bcdbde27e7a05e8 /ext/date | |
| parent | d9b443095ff849024d7b9f048f736d62ddc54142 (diff) | |
| download | php-git-8649483a6922c5d941315fa6034e5cd92609e522.tar.gz | |
- Fixed bug #44703 (htmlspecialchars() does not detect bad character set
argument).
Diffstat (limited to 'ext/date')
| -rw-r--r-- | ext/date/php_date.c | 16 | ||||
| -rw-r--r-- | ext/date/tests/bug44742.phpt | 35 |
2 files changed, 48 insertions, 3 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c index f1a72e1f98..a319831859 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2271,9 +2271,19 @@ PHP_FUNCTION(timezone_offset_get) dateobj = (php_date_obj *) zend_object_store_get_object(dateobject TSRMLS_CC); DATE_CHECK_INITIALIZED(dateobj->time, DateTime); - offset = timelib_get_time_zone_info(dateobj->time->sse, tzobj->tzi.tz); - RETVAL_LONG(offset->offset); - timelib_time_offset_dtor(offset); + switch (tzobj->type) { + case TIMELIB_ZONETYPE_ID: + offset = timelib_get_time_zone_info(dateobj->time->sse, tzobj->tzi.tz); + RETVAL_LONG(offset->offset); + timelib_time_offset_dtor(offset); + break; + case TIMELIB_ZONETYPE_OFFSET: + RETURN_LONG(tzobj->tzi.utc_offset * -60); + break; + case TIMELIB_ZONETYPE_ABBR: + RETURN_LONG((tzobj->tzi.z.utc_offset - (tzobj->tzi.z.dst*60)) * -60); + break; + } } /* }}} */ diff --git a/ext/date/tests/bug44742.phpt b/ext/date/tests/bug44742.phpt new file mode 100644 index 0000000000..e6df1efabd --- /dev/null +++ b/ext/date/tests/bug44742.phpt @@ -0,0 +1,35 @@ +--TEST-- +Bug #44742 (timezone_offset_get() causes segmentation faults) +--FILE-- +<?php +$dates = array( + "2008-04-11 00:00:00+0000", + "2008-04-11 00:00:00+0200", + "2008-04-11 00:00:00+0330", + "2008-04-11 00:00:00-0500", + "2008-04-11 00:00:00-1130", + "2008-04-11 00:00:00 CEST", + "2008-04-11 00:00:00 CET", + "2008-04-11 00:00:00 UTC", + "2008-04-11 00:00:00 America/New_York", + "2008-04-11 00:00:00 Europe/Oslo", + "2008-04-11 00:00:00 Asia/Singapore", +); +foreach ($dates as $date) +{ + $date = date_create($date); + var_dump(timezone_offset_get(date_timezone_get($date), $date)); +} +?> +--EXPECT-- +int(0) +int(7200) +int(12600) +int(-18000) +int(-41400) +int(7200) +int(3600) +int(0) +int(-14400) +int(7200) +int(28800) |
