summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllen Winter <allen.winter@kdab.com>2017-11-13 18:37:13 -0500
committerAllen Winter <allen.winter@kdab.com>2017-11-13 18:37:13 -0500
commit0b4743a6c218893286f41b611f3057f683c6c691 (patch)
treeecb5285f7236056e8d0d7ef4006c90b340e4aed6
parentbc05dbba79021b7373681cc982ddee04d1ba126e (diff)
downloadlibical-git-0b4743a6c218893286f41b611f3057f683c6c691.tar.gz
icaltimezone.c - Fix a multi-threaded deadlock in icaltimezone_load_builtin_timezone()
-rw-r--r--ReleaseNotes.txt1
-rw-r--r--src/libical/icaltimezone.c4
2 files changed, 4 insertions, 1 deletions
diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt
index 0e03329c..9487fc2e 100644
--- a/ReleaseNotes.txt
+++ b/ReleaseNotes.txt
@@ -4,6 +4,7 @@ Release Highlights
Version 3.0.1:
--------------
* Built-in timezones updated to tzdata2017c
+ * Fix a multi-threaded deadlock in icaltimezone_load_builtin_timezone()
Version 3.0.0:
--------------
diff --git a/src/libical/icaltimezone.c b/src/libical/icaltimezone.c
index 7ed36414..070b1252 100644
--- a/src/libical/icaltimezone.c
+++ b/src/libical/icaltimezone.c
@@ -1821,8 +1821,10 @@ static void icaltimezone_load_builtin_timezone(icaltimezone *zone)
icaltimezone_builtin_lock();
/* If the location isn't set, it isn't a builtin timezone. */
- if (!zone->location || !zone->location[0])
+ if (!zone->location || !zone->location[0]) {
+ icaltimezone_builtin_unlock();
return;
+ }
if (use_builtin_tzdata) {
char *filename;