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

+6 -9
+6 -9
pkgs/development/libraries/libical/respect-env-tzdir.patch
··· 1 - diff --git a/src/libical/icaltz-util.c b/src/libical/icaltz-util.c 2 - index fe984c9..22ba0a1 100644 3 - --- a/src/libical/icaltz-util.c 4 - +++ b/src/libical/icaltz-util.c 5 - @@ -107,7 +107,7 @@ typedef struct 6 char charcnt[4]; 7 } tzinfo; 8 9 -static char *search_paths [] = {"/usr/share/zoneinfo","/usr/lib/zoneinfo","/etc/zoneinfo","/usr/share/lib/zoneinfo"}; 10 - +static char *search_paths [] = {"/etc/zoneinfo"}; 11 static char *zdir = NULL; 12 13 #define NUM_SEARCH_PATHS (sizeof (search_paths)/ sizeof (search_paths [0])) 14 - @@ -194,6 +194,16 @@ set_zonedir (void) 15 const char *fname = ZONES_TAB_SYSTEM_FILENAME; 16 unsigned int i; 17 18 - + const char *env_tzdir = strdup (getenv ("TZDIR")); 19 + if (env_tzdir) { 20 + sprintf (file_path, "%s/%s", env_tzdir, fname); 21 + if (!access (file_path, F_OK|R_OK)) { 22 + zdir = env_tzdir; 23 + return; 24 + } 25 - + free (env_tzdir); 26 + } 27 + 28 for (i = 0; i < NUM_SEARCH_PATHS; i++) {
··· 1 + --- a/src/libical/icaltz-util.c 2015-06-11 15:40:58.843138630 +0200 2 + +++ b/src/libical/icaltz-util.c 2015-06-11 15:43:12.722046252 +0200 3 + @@ -107,7 +107,7 @@ 4 char charcnt[4]; 5 } tzinfo; 6 7 -static char *search_paths [] = {"/usr/share/zoneinfo","/usr/lib/zoneinfo","/etc/zoneinfo","/usr/share/lib/zoneinfo"}; 8 + +static char *search_paths [] = {"/etc/zoneinfo","/usr/share/zoneinfo","/usr/lib/zoneinfo","/usr/share/lib/zoneinfo"}; 9 static char *zdir = NULL; 10 11 #define NUM_SEARCH_PATHS (sizeof (search_paths)/ sizeof (search_paths [0])) 12 + @@ -194,6 +194,15 @@ 13 const char *fname = ZONES_TAB_SYSTEM_FILENAME; 14 unsigned int i; 15 16 + + const char *env_tzdir = getenv ("TZDIR"); 17 + if (env_tzdir) { 18 + sprintf (file_path, "%s/%s", env_tzdir, fname); 19 + if (!access (file_path, F_OK|R_OK)) { 20 + zdir = env_tzdir; 21 + return; 22 + } 23 + } 24 + 25 for (i = 0; i < NUM_SEARCH_PATHS; i++) {