X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=mime-node.c;h=f719422ec678bbe340cd670861bb5cf0b0ca347e;hp=851f963b7ee0e11e1a6a50d848b8f7e8a75adb4d;hb=069362ee10d0af108c7d0a275bda1a78c4a49f27;hpb=d487ef9e58bcd193118f19f771d5ef3984616be5 diff --git a/mime-node.c b/mime-node.c index 851f963b..f719422e 100644 --- a/mime-node.c +++ b/mime-node.c @@ -14,7 +14,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/ . + * along with this program. If not, see https://www.gnu.org/licenses/ . * * Authors: Carl Worth * Keith Packard @@ -129,8 +129,6 @@ DONE: return status; } -#ifdef GMIME_ATLEAST_26 - /* Signature list destructor (GMime 2.6) */ static int _signature_list_free (GMimeSignatureList **proxy) @@ -205,84 +203,6 @@ node_decrypt_and_verify (mime_node_t *node, GMimeObject *part, g_error_free (err); } -#else /* GMIME_ATLEAST_26 */ - -/* Signature validity destructor (GMime 2.4) */ -static int -_signature_validity_free (GMimeSignatureValidity **proxy) -{ - g_mime_signature_validity_free (*proxy); - return 0; -} - -/* Set up signature validity destructor (GMime 2.4) */ -static void -set_signature_validity_destructor (mime_node_t *node) -{ - GMimeSignatureValidity **proxy = talloc (node, GMimeSignatureValidity *); - if (proxy) { - *proxy = node->sig_validity; - talloc_set_destructor (proxy, _signature_validity_free); - } -} - -/* Verify a signed mime node (GMime 2.4) */ -static void -node_verify (mime_node_t *node, GMimeObject *part, - notmuch_crypto_context_t *cryptoctx) -{ - GError *err = NULL; - - node->verify_attempted = TRUE; - node->sig_validity = g_mime_multipart_signed_verify - (GMIME_MULTIPART_SIGNED (part), cryptoctx, &err); - if (node->sig_validity) { - set_signature_validity_destructor (node); - } else { - fprintf (stderr, "Failed to verify signed part: %s\n", - err ? err->message : "no error explanation given"); - } - - if (err) - g_error_free (err); -} - -/* Decrypt and optionally verify an encrypted mime node (GMime 2.4) */ -static void -node_decrypt_and_verify (mime_node_t *node, GMimeObject *part, - notmuch_crypto_context_t *cryptoctx) -{ - GError *err = NULL; - GMimeMultipartEncrypted *encrypteddata = GMIME_MULTIPART_ENCRYPTED (part); - - node->decrypt_attempted = TRUE; - node->decrypted_child = g_mime_multipart_encrypted_decrypt - (encrypteddata, cryptoctx, &err); - if (! node->decrypted_child) { - fprintf (stderr, "Failed to decrypt part: %s\n", - err ? err->message : "no error explanation given"); - goto DONE; - } - - node->decrypt_success = TRUE; - node->verify_attempted = TRUE; - - /* The GMimeSignatureValidity returned here is a const, unlike the - * one returned by g_mime_multipart_signed_verify() in - * node_verify() above, so the destructor is not needed. - */ - node->sig_validity = g_mime_multipart_encrypted_get_signature_validity (encrypteddata); - if (! node->sig_validity) - fprintf (stderr, "Failed to verify encrypted signed part: %s\n", - err ? err->message : "no error explanation given"); - - DONE: - if (err) - g_error_free (err); -} - -#endif /* GMIME_ATLEAST_26 */ - static mime_node_t * _mime_node_create (mime_node_t *parent, GMimeObject *part) { @@ -402,20 +322,21 @@ mime_node_child (mime_node_t *parent, int child) static mime_node_t * _mime_node_seek_dfs_walk (mime_node_t *node, int *n) { - mime_node_t *ret = NULL; int i; if (*n == 0) return node; *n -= 1; - for (i = 0; i < node->nchildren && !ret; i++) { + for (i = 0; i < node->nchildren; i++) { mime_node_t *child = mime_node_child (node, i); - ret = _mime_node_seek_dfs_walk (child, n); - if (!ret) - talloc_free (child); + mime_node_t *ret = _mime_node_seek_dfs_walk (child, n); + if (ret) + return ret; + + talloc_free (child); } - return ret; + return NULL; } mime_node_t *