<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[hMailServer 6.2.10: the COM API reported success on calls it refused]]></title><description><![CDATA[<p dir="auto">hMailServer 6.2.10 fixed an authorization defect in the COM API. Fifteen methods rejected an unauthorized caller with <code>return false</code>. These functions return HRESULT, where false is 0, which is S_OK, so each one reported success for a call it had just refused. Anyone administering the server through a COM client or script was affected.</p>
<p dir="auto"><strong>What the upgrade involved</strong></p>
<p dir="auto">Drop-in over 6.2.9. No database change, schema version 6005, and no configuration change. Two administration front-ends were removed, so a custom install that ticked "Administrative tools" for the WebAdmin or hMailAdmin.exe had nothing left to run. The component is now "Remote administration support (registers the COM API for scripts)", which is what it always did. COM scripts against a remote instance still work.</p>
<p dir="auto">The changes:</p>
<ul>
<li>InterfaceCache's five getters returned before writing <code>*pVal</code>, so a caller without server-admin rights got S_OK and read uninitialized memory. <code>InterfaceSettings::SetAdministratorPassword</code> and five siblings skipped the write and reported success, so the caller was told the administrator password had changed when it had not. InterfaceMessageIndexing's four methods did the same. (0d01a55)</li>
<li>Found by running CodeQL's C++ suite locally. The workflow analysed C# only, so 4.65 MB of network-facing code had never been scanned. It returned 16 high-severity findings, 15 of them these. A re-run after the fix returns 1, a verified false positive in FileUtilities.cpp.</li>
<li>The PHP WebAdmin is gone (53f52eb). It stored the administrator password in plaintext in a PHP session and replayed it to Authenticate() on every request. The installer dropped from 400 payload files to 255.</li>
<li>Code-quality findings in shipped, hand-written code: 958 to 0. DBUpdater rethrew with <code>throw ex</code>, resetting the stack trace on the database-upgrade failure path. Three <code>as</code> casts dereferenced without a null check. PngByteQRCode was built per render in the two-factor dialog and never disposed.</li>
<li>OpenTelemetryTracing bound its OTLP collector to port 9099, the port the server's own metrics listener uses. With NUnit running 32 workers in parallel it could not bind. It now uses 9096.</li>
</ul>
<p dir="auto"><a href="https://www.progressiverobot.com/hmailserver-downloads/" rel="nofollow ugc">Full release notes, checksums and signatures</a></p>
]]></description><link>https://www.hmailserver.co.uk/topic/28201/hmailserver-6.2.10-the-com-api-reported-success-on-calls-it-refused</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 04:30:31 GMT</lastBuildDate><atom:link href="https://www.hmailserver.co.uk/topic/28201.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Aug 2026 16:39:47 GMT</pubDate><ttl>60</ttl></channel></rss>