mime-node: handle decrypt_result more safely
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Thu, 30 Nov 2017 08:59:26 +0000 (03:59 -0500)
committerDavid Bremner <david@tethera.net>
Tue, 5 Dec 2017 01:39:13 +0000 (21:39 -0400)
If (for whatever reason) we don't get a decrypt_result back, or it's
not structured the way we expect it to be, we shouldn't choke on it.

mime-node.c

index e1aca969bef775d06659a556b1140e37897c1da9..7c8b26024460346ff3387df68234dddfd1256a36 100644 (file)
@@ -214,13 +214,15 @@ node_decrypt_and_verify (mime_node_t *node, GMimeObject *part,
     node->decrypt_success = true;
     node->verify_attempted = true;
 
-    /* This may be NULL if the part is not signed. */
-    node->sig_list = g_mime_decrypt_result_get_signatures (decrypt_result);
-    if (node->sig_list) {
-       g_object_ref (node->sig_list);
-       set_signature_list_destructor (node);
+    if (decrypt_result) {
+       /* This may be NULL if the part is not signed. */
+       node->sig_list = g_mime_decrypt_result_get_signatures (decrypt_result);
+       if (node->sig_list) {
+           g_object_ref (node->sig_list);
+           set_signature_list_destructor (node);
+       }
+       g_object_unref (decrypt_result);
     }
-    g_object_unref (decrypt_result);
 
  DONE:
     if (err)