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.
This commit is contained in:
David Bremner 2017-03-12 09:51:01 -03:00
parent 8e7812d824
commit 62822a4e2d
2 changed files with 8 additions and 3 deletions

View file

@ -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));

View file

@ -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