<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vmime/src, branch master</title>
<subtitle>A powerful C++ class library for working with RFC-822 and MIME messages and Internet messaging services like IMAP, POP or SMTP.</subtitle>
<id>http://git.bktus.com/gpgfrontend/vmime/atom?h=master</id>
<link rel='self' href='http://git.bktus.com/gpgfrontend/vmime/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/'/>
<updated>2026-09-12T21:46:25Z</updated>
<entry>
<title>fix(parsing): limit MIME nesting depth</title>
<updated>2026-09-12T21:46:25Z</updated>
<author>
<name>saturneric</name>
<email>eric@bktus.com</email>
</author>
<published>2026-09-12T21:46:25Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=d688de18b5b25b4edc73fc8d3ba9511733c78a79'/>
<id>urn:sha1:d688de18b5b25b4edc73fc8d3ba9511733c78a79</id>
<content type='text'>
- bound recursive multipart parsing to prevent stack exhaustion
- preserve part bounds without descending past the configured limit
- apply the limit to malformed-message recovery paths
- expose configurable depth limits through parsingContext
- preserve the limit when copying parsing contexts
</content>
</entry>
<entry>
<title>fix(imap): prevent Windows TEXT macro collision</title>
<updated>2026-09-12T20:50:52Z</updated>
<author>
<name>saturneric</name>
<email>eric@bktus.com</email>
</author>
<published>2026-09-12T20:50:52Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=a28c7efd4c8b23c596ed34dcdebaa06834f621cf'/>
<id>urn:sha1:a28c7efd4c8b23c596ed34dcdebaa06834f621cf</id>
<content type='text'>
- undefine the Windows TEXT macro before declaring the IMAP SEARCH key
- avoid macro expansion errors when including winsock2.h on Windows
</content>
</entry>
<entry>
<title>fix(tls): enforce minimum TLS 1.2 protocol version</title>
<updated>2026-09-12T18:21:19Z</updated>
<author>
<name>saturneric</name>
<email>eric@bktus.com</email>
</author>
<published>2026-09-12T18:17:32Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=4f570023bf81205e63571898a0cb345697b715d0'/>
<id>urn:sha1:4f570023bf81205e63571898a0cb345697b715d0</id>
<content type='text'>
- prevent negotiation of deprecated SSLv3 and TLS 1.0/1.1
- use the minimum protocol API on newer OpenSSL versions
- provide legacy OpenSSL fallback through protocol disable options
</content>
</entry>
<entry>
<title>feat(smtp): add AUTH LOGIN support</title>
<updated>2026-09-12T18:21:12Z</updated>
<author>
<name>saturneric</name>
<email>eric@bktus.com</email>
</author>
<published>2026-09-12T18:17:25Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=97c04923c88402ba64aaee8da35cfb66857ec023'/>
<id>urn:sha1:97c04923c88402ba64aaee8da35cfb66857ec023</id>
<content type='text'>
- support servers that offer LOGIN without other mechanisms
- encode username and password as base64 prompt responses
- restrict LOGIN authentication to secured connections
- mark the connection authenticated after a successful exchange
</content>
</entry>
<entry>
<title>fix: must init raw pointer *bodyPart</title>
<updated>2024-12-01T18:26:23Z</updated>
<author>
<name>saturneric</name>
<email>eric@bktus.com</email>
</author>
<published>2024-12-01T18:26:23Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=52f6184e8898f3025963444d988ed0b07b06db53'/>
<id>urn:sha1:52f6184e8898f3025963444d988ed0b07b06db53</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: remember boundary from parsing</title>
<updated>2024-11-28T11:00:39Z</updated>
<author>
<name>saturneric</name>
<email>eric@bktus.com</email>
</author>
<published>2024-11-28T11:00:39Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=193a9ee85b1a491955a7181250ebf0296ccc5d0d'/>
<id>urn:sha1:193a9ee85b1a491955a7181250ebf0296ccc5d0d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix a test failure in pathTest::testGenerate (#312)</title>
<updated>2024-06-11T18:49:10Z</updated>
<author>
<name>Jan Engelhardt</name>
<email>jengelh@inai.de</email>
</author>
<published>2024-06-11T18:49:10Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=beb238b5e7a8e50dd2937983e6d54ed79fdb5031'/>
<id>urn:sha1:beb238b5e7a8e50dd2937983e6d54ed79fdb5031</id>
<content type='text'>
* Fix a test failure in testNewFromString

Fixes an oversight in d296c2d1.

* Fix a test failure in pathTest::testGenerate

Partially revert v0.9.2-183-g9b65b4de.

As per RFC 5322 §3.4.1, an email address must always have a @.
As per RFC 5321 §4.1.2, a path is similar to an email address (always
@), with "" (&lt;&gt;) being the only other special value.

Fixes #294, #301.</content>
</entry>
<entry>
<title>contrib: update utfcpp to v4.0.5 (#309)</title>
<updated>2024-06-11T18:45:51Z</updated>
<author>
<name>Jan Engelhardt</name>
<email>jengelh@inai.de</email>
</author>
<published>2024-06-11T18:45:51Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=fb5b82746a4f8aa52f8408bc2b98b55993d2aaea'/>
<id>urn:sha1:fb5b82746a4f8aa52f8408bc2b98b55993d2aaea</id>
<content type='text'>
Download a new version from https://github.com/nemtrif/utfcpp/
which explicitly supports C++17.</content>
</entry>
<entry>
<title>build: resolve a -Wunused-function compiler warning (#308)</title>
<updated>2024-06-11T18:44:18Z</updated>
<author>
<name>Jan Engelhardt</name>
<email>jengelh@inai.de</email>
</author>
<published>2024-06-11T18:44:18Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=5f8fa2260278618b164272e9d9ee15b39704b30e'/>
<id>urn:sha1:5f8fa2260278618b164272e9d9ee15b39704b30e</id>
<content type='text'>
posixSocket.cpp:67:7: warning: ‘char*
{anonymous}::vmime_strerror_r_result(int, char*)’ defined but not
used [-Wunused-function]
   67 | char* vmime_strerror_r_result(int /* res */, char* buf) {

It is to be expected that one of the two r_result functions is going unused,
depending on whichever platform we are currently building on.</content>
</entry>
<entry>
<title>asciiPercent computation: another potential multiplication overflow (#307)</title>
<updated>2024-05-21T18:48:08Z</updated>
<author>
<name>Jan Engelhardt</name>
<email>jengelh@inai.de</email>
</author>
<published>2024-05-21T18:48:08Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/vmime/commit/?id=a2636bd4ae2c9ed1b4a4a01324300ed1432fd40d'/>
<id>urn:sha1:a2636bd4ae2c9ed1b4a4a01324300ed1432fd40d</id>
<content type='text'>
* build: resolve a -Wconversion compiler warning

wordEncoder.cpp:312:91: warning: conversion from
‘std::__cxx11::basic_string&lt;char&gt;::size_type’ {aka ‘long unsigned
int’} to ‘double’ may change value [-Wconversion]
  312 | buffer.length() == 0 ? 1 : static_cast&lt;double&gt;(asciiCount) / buffer.length();
      |                                                              ~~~~~~~~~~~~~^~

* wordEncoder: replace value 100 for asciiPercent

asciiPercent is a ratio, and not counting in units of hundredths
anymore. The maximum value therefore should be 1 not 100.

* vmime: avoid integer multiply wraparound in text::createFromString

The change from commit v0.9.2-194-gb447adbe needs to be applied to
one more function that replicates the same code.

(If the input string is 42949673 characters long or larger, there will
be integer overflow on 32-bit platforms when multiplying by 100.
Switch that one computation to floating point.)</content>
</entry>
</feed>
