libical: fix crash when TZDIR is empty, and add non-nixos zoneinfo paths. Closes #8285
This commit is contained in:
parent
e1683eeff1
commit
fbfdc71e1f
@ -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++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user