On 01/11/2019 08:39:36 PM Fri, Peter Bloomfield wrote:
Hi Albrecht:On 01/05/2019 03:28:44 PM Sat, Peter Bloomfield wrote: …I've pushed all three patches to GitLab, autocrypt branch. I've had one instance of some CRITICAL messages related to AutoCrypt, but to my shame I was not in gdb so I didn't get a stack trace. I /am/ in gdb now, so if it happens again I should be able to debug.The message is: (balsa:9235): autocrypt-CRITICAL **: 11:18:05.376: autocrypt_from_message: assertion 'LIBBALSA_IS_MESSAGE(message) && (message->headers != NULL) && (message->headers->from != NULL) && (message->headers->content_type != NULL) && GMIME_IS_OBJECT(message->mime_msg) && (autocrypt_db != NULL)' failed and it fails because message->mime_msg is NULL. I see it only in IMAP mailboxes, and only for certain messages--perhaps those with HTML parts(?). Do we really need mime_msg, or can we get the autocrypt headers instead from message->headers?
Could the attached work? Peter
diff --git a/libbalsa/autocrypt.c b/libbalsa/autocrypt.c
index 6c6c5f5a7..1d35459e9 100644
--- a/libbalsa/autocrypt.c
+++ b/libbalsa/autocrypt.c
@@ -196,12 +196,11 @@ autocrypt_from_message(LibBalsaMessage *message,
GError **error)
{
const gchar *from_addr;
- GMimeHeaderList *headers;
- GMimeHeaderIter iter;
AutocryptData *autocrypt = NULL;
+ const gchar *autocrypt_hdr;
g_return_if_fail(LIBBALSA_IS_MESSAGE(message) && (message->headers != NULL) && (message->headers->from != NULL) &&
- (message->headers->content_type != NULL) && GMIME_IS_OBJECT(message->mime_msg) && (autocrypt_db != NULL));
+ (message->headers->content_type != NULL) && (autocrypt_db != NULL));
// FIXME - we should ignore spam - how can we detect it?
@@ -231,30 +230,28 @@ autocrypt_from_message(LibBalsaMessage *message,
g_debug("message from '%s', date %ld", from_addr, message->headers->date);
/* scan for Autocrypt headers */
- headers = g_mime_object_get_header_list(GMIME_OBJECT(message->mime_msg));
- if (g_mime_header_list_get_iter(headers, &iter)) {
- do {
- if ((g_ascii_strcasecmp(g_mime_header_iter_get_name(&iter), "Autocrypt") == 0) &&
- (g_mime_header_iter_get_value(&iter) != NULL)) {
- AutocryptData *new_data;
-
- new_data = parse_autocrypt_header(g_mime_header_iter_get_value(&iter));
- if (new_data != NULL) {
- if (autocrypt == NULL) {
- autocrypt = new_data;
- } else {
- g_info("more than one valid Autocrypt header, ignore message");
- autocrypt_free(autocrypt);
- autocrypt_free(new_data);
- return;
- }
- } else {
- /* ignore message with broken Autocrypt header */
- autocrypt_free(autocrypt);
- return;
- }
- }
- } while (g_mime_header_iter_next(&iter));
+
+ autocrypt_hdr = libbalsa_message_get_user_header(message, "Autocrypt");
+ if (autocrypt_hdr != NULL) {
+ AutocryptData *new_data;
+
+ new_data = parse_autocrypt_header(autocrypt_hdr);
+ if (new_data != NULL) {
+ if (autocrypt == NULL) {
+ autocrypt = new_data;
+ } else {
+ g_info("more than one valid Autocrypt header, ignore message");
+ autocrypt_free(autocrypt);
+ autocrypt_free(new_data);
+
+ return;
+ }
+ } else {
+ /* ignore message with broken Autocrypt header */
+ autocrypt_free(autocrypt);
+
+ return;
+ }
}
/* check if addr matches From: - ignore otherwise */
pgpjy7gNffXr8.pgp
Description: PGP signature
_______________________________________________ balsa-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/balsa-list
