### GMime 3.2.14 * Avoid clearing the header list of a GMimeMessage when adding addresses to an address header. (issue #129) * Added the internet_address_list_append_parse() prototype definition to internet-address.h. (issue #128) * Use gtk-doc ulink syntax in doc comments instead of ``. (issue #131) * Fixed rfc2047 token decoding logic for base64 encodings. (issue #133) * Properly handle GDateTime UTC offsets with non-zero seconds. (issue #134) * Improved introspection data for bindings such as Vala. * Improved address name quoting. * Added a GNotifyDestroy to the GMimeParserOptions callback. * Fixed the URL linkifier logic to properly handle links without a '/' before the query string. * Fixed the URL linkifier logic to handle domains that start with numbers. (issue #152) * Reverted base64 decoder optimizations from 3.2.10 and 3.2.11 to support chunked base64. (issue #150) ### GMime 3.2.13 * Optimized parsing of messages with lots of address headers. (issue #126) ### GMime 3.2.12 * Fixed a memory leak in g_mime_gpgme_get_decrypt_result(). * Updated vapigen.m4, introspection.m4, and gpgme.m4 to improve cross-platform builds. * Add and use ax_lib_socket_nsl.m4 so that systems that do not require linkage with libnsl are not forced to link with it unnecessesarily. * Changed the build system to no longer use dolt (which is obsolete). ### GMime 3.2.11 * Fixed a bug in the base64 decoder. D'oh! ### GMime 3.2.10 * Improved performance of base64 encoder by ~5%. * Improved performance of base64 decoder by ~25%. * Unref the autocrypt header after adding it to the list. (issue #118) * Work around a bug in g_time_zone_new_offset() by using identifiers instead. (issue #120) ### GMime 3.2.9 * g_mime_multipart_signed_verify() now allows type/subtype and type/x-subtype signature parts. (issue #115) * Fixed header folding logic to avoid folding the first line of a header value. (issue #112 and issue #113) * Fixed bugs discovered by static analysis. (issue #110) * Fixed GMimeStreamPipe to set errno to ESPIPE for seek/tell/length methods. * Fixed GMimeCertificates to prefer gpgme_user_id_t's address field over the email field. (issue #102) ### GMime 3.2.8 * Various fixes to Vala (and other?) language bindings. (issue #96 and issue #101) * Enabled build for PPC64LE architecture (issue #100) * Added g_mime_object_write_content_to_stream() (issue #97) * Fixed parameter list parsing logic to not report a warning when everything is valid. * Fixed the parser to handle MIME parts without headers -or- content of any kind. ### GMime 3.2.7 * Added some configure logic to auto-detect the system shift-jis charset alias. (issue #81) * Fixed tests/Makefile.am to exit with a non-negative value (issue #82) * Fixed logic to skip expired or revoked gpg subkeys when looking for the correct subkey to use for signing or encrypting. (issue #88) * Fixed a regression introduced into 3.2.6 as part of the header parsder rewrite that lost the ability to warn about invalid headers for non-toplevel MIME parts. (issue #89) * Fixed S/MIME to always set GPGME_KEYLIST_MODE_VALIDATE when looking up certificates as this is needed in order to correctly populate the GMimeCertificates (issue #90) ### GMime 3.2.6 * Added methods to get 64-bit timestamps for the creation-date and expiration-date of GMimeCertificates and GMimeSignatures. (issue #68) * Fixed the vala abstract public constructor for GMimeObject. (issue #76) * Fixed a bug in GMimeParser's header parser. (issue #78) * Added build files for Visual Studio 2017 thanks to Vitaliy Didik. ### GMime 3.2.5 * Modified GMimeParser to prevent stack overflows when parsing deeply nested messages. GMimeParser now has a limit on how deep multipart and/or message/rfc822 MIME part nesting is allowed to go before the parser will take action to prevent a stack overflow. If the max level is reached at a message/rfc822 part, then that part will be consumed by the parser as a generic GMimePart rather than a GMimeMessagePart. Likewise, if the max level is reached at any type of multipart, then the content of said multipart will be packed into the GMimeMultipart's preface and not parsed any further. * g_mime_multipart_foreach has been rewritten to avoid recursion, thereby avoiding potential stack overflows. * The gmime-port-2-6-to-3-0.sh script has been fixed to use proper sed syntax. ### GMime 3.2.4 * Replaced calls to g_memmove with memmove. It seems that the latest versions of glib have deprecated g_memmove in favor of having developers use libc's memmove() function directly. This change reduces the number of compiler warnings during the gmime build process. * Added a new GMIME_DECRYPT_NO_VERIFY flag that disables signature verification. For cases where it is not necessary to verify the signatures (or it is known that there are no signatures), making use of this flag can significantly improve the performance of decrypting OpenPGP content. * Modified GMimeParser to not set the OpenPGP state for base64/uuencoded content. While the GMimeParser is parsing a MIME message (or other MIME entity), it will normally attempt to identify OpenPGP markers in the content of GMimeParts. However, when the content is base64 or uu-encoded, the parser is unable to accurately detect these markers and so in previous versions, it was falsely claiming that such MIME parts had no OpenPGP content even though it was possible, after decoding their content, that they did in fact have OpenPGP content. For more details about this bug, see issue #60. * Added reporting of RFC 5322 addr-spec syntax violations to the GMimeParserWarning API. * Fixed a stack underflow error in the uudecode.c sample. * Improved Vala bindings. - Use correct symbol prefixes which avoid loads of cname attributes. - Unhide FilterBest.charset() method which conflicts with charset field. - Object.write_to_stream conflicts with function pointer with the same name but with a different signature. Fixes https://gitlab.gnome.org/GNOME/gmime/issues/2 Fixes https://gitlab.gnome.org/GNOME/gmime/issues/3 ### GMime 3.2.3 * Fixed GMimeFilterBasic for uudecode. Don't allow the outbuf to ever get set to NULL which could happen if the begin-line had not yet been found (and thus g_mime_filter_set_size() had never been called to allocate the outbuf buffer). * Fixed a bug in g_mime_uuencode_step(). * Modified GMimeParser to work around broken mailers that send base64 encoded message/rfc822 parts. Fixes https://gitlab.gnome.org/GNOME/gmime/issues/1 * Fixed a bug in g_mime_quoted_encode_close() where it would incorrectly end the quoted-printable output with a line containing only "=\n" even when it is not needed. * Improved g_mime_content_encoding_from_string(). This function no longer requires the input string to be an exact match for "7bit", "8bit", "base64", etc. It can now handle whitespace before and after the value. In other words, it is now easy to use this function on raw header values before any whitespace trimming has been done. * Really, really fixed the packaging to include the Vala build files. ### GMime 3.2.2 * Fixed packaging to include Vala files. ### GMime 3.2.1 * Fixed GMimeParser to recognize the message/global mime-type (a UTF-8 version of message/rfc822). (issue #50) * Updated GMime to use libidn2 instead of the older libidn library. (issue #48) * Fixed address quoting logic and IDN2 encoding. The rules for quoting address names should use 'specials' instead of 'tspecials' and when encoding domain names via IDN2, check if the encoded domain matches the original domain name (other than case). If they match, prefer the non-encoded domain name since the user may have used uppercase characters to enhance readability of the domain name. * Added GMIME_DECRYPT_ENABLE_ONLINE_CERTIFICATE_CHECKS and GMIME_DECRYPT_ENABLE_KEYSERVER_LOOKUPS as possible flags to pass to g_mime_crypto_context_decrypt(). Also added GMIME_VERIFY_ENABLE_ONLINE_CERTIFICATE_CHECKS and GMIME_VERIFY_ENABLE_KEYSERVER_LOOKUPS as possible flags to pass to g_mime_crypto_context_verify(). Clients that wish to enable online certificate and/or keyserver lookups now need to explicitly enable this functionality. These changes are designed to make it more difficult for clients to be susceptible to Efail privacy exploits. Specifically, it is meant to address the privacy concerns regarding CRL and OCSP status check backchannels. For more information about Efail, see https://www.efail.de/ * Fixed g_mime_message_write_to_stream() to prioritize message headers over body headers (even when they have an offset of -1). (issue #46) * The GMimeParser can now warn about a number of RFC-compliance issues that it finds when parsing messages. * Fixed GMimeTextPart to make sure that the GMimeFilterCharset is non-null before trying to use it. This can happen if the charset specified in the Content-Type header is unsupported by the iconv library.