aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2017-03-12 09:51:01 -0300
committerDavid Bremner <david@tethera.net>2017-03-15 21:58:25 -0300
commit62822a4e2dee695c486383f0fe3d90edafae24db (patch)
treee05a8837ae72e4f4ea57a8a9928af31b695136f9 /lib
parent8e7812d8243ed06fb4b2ff8f97598dbd1c139e0c (diff)
lib: clamp return value of g_mime_utils_header_decode_date to >=0
For reasons not completely understood at this time, gmime (as of 2.6.22) is returning a date before 1900 on bad date input. Since this confuses some other software, we clamp such dates to 0, i.e. 1970-01-01.
Diffstat (limited to 'lib')
-rw-r--r--lib/message.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/message.cc b/lib/message.cc
index 007f1171..e08659e5 100644
--- a/lib/message.cc
+++ b/lib/message.cc
@@ -1034,10 +1034,16 @@ _notmuch_message_set_header_values (notmuch_message_t *message,
/* GMime really doesn't want to see a NULL date, so protect its
* sensibilities. */
- if (date == NULL || *date == '\0')
+ if (date == NULL || *date == '\0') {
time_value = 0;
- else
+ } else {
time_value = g_mime_utils_header_decode_date (date, NULL);
+ /*
+ * Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=779923
+ */
+ if (time_value < 0)
+ time_value = 0;
+ }
message->doc.add_value (NOTMUCH_VALUE_TIMESTAMP,
Xapian::sortable_serialise (time_value));