libical: fix crash when TZDIR is empty, and add non-nixos zoneinfo paths. Closes #8285

This commit is contained in:
Luca Bruno 2015-06-11 15:46:50 +02:00
parent e1683eeff1
commit fbfdc71e1f

View File

@ -1,28 +1,25 @@
diff --git a/src/libical/icaltz-util.c b/src/libical/icaltz-util.c --- a/src/libical/icaltz-util.c 2015-06-11 15:40:58.843138630 +0200
index fe984c9..22ba0a1 100644 +++ b/src/libical/icaltz-util.c 2015-06-11 15:43:12.722046252 +0200
--- a/src/libical/icaltz-util.c @@ -107,7 +107,7 @@
+++ b/src/libical/icaltz-util.c
@@ -107,7 +107,7 @@ typedef struct
char charcnt[4]; char charcnt[4];
} tzinfo; } tzinfo;
-static char *search_paths [] = {"/usr/share/zoneinfo","/usr/lib/zoneinfo","/etc/zoneinfo","/usr/share/lib/zoneinfo"}; -static char *search_paths [] = {"/usr/share/zoneinfo","/usr/lib/zoneinfo","/etc/zoneinfo","/usr/share/lib/zoneinfo"};
+static char *search_paths [] = {"/etc/zoneinfo"}; +static char *search_paths [] = {"/etc/zoneinfo","/usr/share/zoneinfo","/usr/lib/zoneinfo","/usr/share/lib/zoneinfo"};
static char *zdir = NULL; static char *zdir = NULL;
#define NUM_SEARCH_PATHS (sizeof (search_paths)/ sizeof (search_paths [0])) #define NUM_SEARCH_PATHS (sizeof (search_paths)/ sizeof (search_paths [0]))
@@ -194,6 +194,16 @@ set_zonedir (void) @@ -194,6 +194,15 @@
const char *fname = ZONES_TAB_SYSTEM_FILENAME; const char *fname = ZONES_TAB_SYSTEM_FILENAME;
unsigned int i; unsigned int i;
+ const char *env_tzdir = strdup (getenv ("TZDIR")); + const char *env_tzdir = getenv ("TZDIR");
+ if (env_tzdir) { + if (env_tzdir) {
+ sprintf (file_path, "%s/%s", env_tzdir, fname); + sprintf (file_path, "%s/%s", env_tzdir, fname);
+ if (!access (file_path, F_OK|R_OK)) { + if (!access (file_path, F_OK|R_OK)) {
+ zdir = env_tzdir; + zdir = env_tzdir;
+ return; + return;
+ } + }
+ free (env_tzdir);
+ } + }
+ +
for (i = 0; i < NUM_SEARCH_PATHS; i++) { for (i = 0; i < NUM_SEARCH_PATHS; i++) {