From 0d1ce870eefef4c9d049d81d89d719051f6f1347 Mon Sep 17 00:00:00 2001 From: Jeff Davis Date: Thu, 1 Mar 2018 16:55:46 -0800 Subject: [PATCH] LP#1752753: Guard against invalid timezone If the lib.timezone org setting is not a valid timezone, attempting to use it can result in an internal server error in the OPAC. Let's handle the error with try/catch instead. To test ------- 1. In Library Settings Editor, edit the "Library time zone" setting for Example Branch 1, setting the value to something that's not the name of a time zone (like "invalid" or "UTC-07:00"). 2. In the OPAC, retrieve a record with holdings at Example Branch 1. You will get an Internal Server Error. 3. Edit the library setting to use a valid timezone name, like "America/Vancouver". 4. Retrieve the same record again. This time, the record will display properly. 5. Apply the patch and repeat steps 1 and 2; this time, there should be no internal server error. Signed-off-by: Jeff Davis Signed-off-by: Galen Charlton Signed-off-by: Mike Rylander --- Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm index 72e717ed95..3cb07997db 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm @@ -273,7 +273,13 @@ sub init_ro_object_cache { if ($context_org) { $context_org = $context_org->id if ref($context_org); my $tz = $locale_subs->{get_org_setting}->($context_org,'lib.timezone'); - $date->set_time_zone($tz) if ($tz); + if ($tz) { + try { + $date->set_time_zone($tz); + } catch Error with { + $logger->warn("Invalid timezone: $tz"); + }; + } } return sprintf( "%0.2d:%0.2d:%0.2d %0.2d-%0.2d-%0.4d", -- 2.43.2