Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6412f3e

Browse files
committed
Reject out-of-range numeric timezone specifications.
In commit631dc39, we started to handlesimple numeric timezone offsets via the zic library instead of the oldCTimeZone/HasCTZSet kluge. However, we overlooked the fact that the ziccode will reject UTC offsets exceeding a week (which seems a bit arbitrary,but not because it's too tight ...). This led to possibly settingsession_timezone to NULL, which results in crashes in most timezone-relatedoperations as of 9.4, and crashes in a small number of places even beforethat. So check for NULL return from pg_tzset_offset() and report anappropriate error message. Per bug #11014 from Duncan Gillis.Back-patch to all supported branches, like the previous patch.(Unfortunately, as of today that no longer includes 8.4.)
1 parent212825f commit6412f3e

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

‎src/backend/commands/variable.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,13 @@ check_timezone(char **newval, void **extra, GucSource source)
349349
}
350350
}
351351

352+
/* Test for failure in pg_tzset_offset, which we assume is out-of-range */
353+
if (!new_tz)
354+
{
355+
GUC_check_errdetail("UTC timezone offset is out of range.");
356+
return false;
357+
}
358+
352359
/*
353360
* Pass back data for assign_timezone to use
354361
*/

‎src/timezone/pgtz.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,9 @@ pg_tzset(const char *name)
296296
* The GMT offset is specified in seconds, positive values meaning west of
297297
* Greenwich (ie, POSIX not ISO sign convention). However, we use ISO
298298
* sign convention in the displayable abbreviation for the zone.
299+
*
300+
* Caution: this can fail (return NULL) if the specified offset is outside
301+
* the range allowed by the zic library.
299302
*/
300303
pg_tz*
301304
pg_tzset_offset(longgmtoffset)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp