aboutsummaryrefslogtreecommitdiff
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
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.
-rw-r--r--lib/message.cc10
-rwxr-xr-xtest/T660-bad-date.sh1
2 files changed, 8 insertions, 3 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));
diff --git a/test/T660-bad-date.sh b/test/T660-bad-date.sh
index 6463d5b8..a98e11c8 100755
--- a/test/T660-bad-date.sh
+++ b/test/T660-bad-date.sh
@@ -5,7 +5,6 @@ test_description="parsing of bad dates"
add_message [date]='"()"'
test_begin_subtest 'Bad dates translate to a date after the Unix epoch'
-test_subtest_known_broken
cat <<EOF >EXPECTED
thread:0000000000000001 1970-01-01 [1/1] Notmuch Test Suite; Test message #1 (inbox unread)
EOF