<?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[SetPassword in Trunk Code]]></title><description><![CDATA[<p dir="auto">Dear Victor,</p>
<p dir="auto">There is a bug in the userdb_objects.cpp in trunk. The setpassword function does not consider the Unicode and MBCS. However, I changed the code to this:<br />
void User::setPassword(const TCHAR *password, bool clearChangePasswdFlag)<br />
{<br />
#ifdef UNICODE<br />
    char *mb = MBStringFromWideString(password);<br />
    CalculateSHA1Hash((BYTE *)mb, strlen(mb), m_passwordHash);<br />
    free(mb);<br />
#else<br />
    CalculateSHA1Hash((BYTE *)password, _tcslen(password), m_passwordHash);<br />
#endif<br />
    //CalculateSHA1Hash((BYTE *)password, _tcslen(password), m_passwordHash);<br />
    m_graceLogins = MAX_GRACE_LOGINS;<br />
    m_flags |= UF_MODIFIED;<br />
    if (clearChangePasswdFlag)<br />
        m_flags &amp;= ~UF_CHANGE_PASSWORD;<br />
}<br />
Still has the problem with setting or changing the password.</p>
<p dir="auto">Could you check?</p>
<p dir="auto">best regards,</p>
<p dir="auto">szll2010</p>
]]></description><link>https://forum.netxms.org/topic/1156/setpassword-in-trunk-code</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 10:38:02 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/1156.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Feb 2011 09:27:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SetPassword in Trunk Code on Sat, 26 Feb 2011 11:28:14 GMT]]></title><description><![CDATA[<p dir="auto">Hi!</p>
<p dir="auto">I changed both setPassword and validatePassword to use UTF-8 instead of current server's page to calculate hash:</p>
<p dir="auto">bool User::validatePassword(const TCHAR *password)<br />
{<br />
   BYTE hash[SHA1_DIGEST_SIZE];</p>
<p dir="auto">#ifdef UNICODE<br />
    char mbPassword[1024];<br />
    WideCharToMultiByte(CP_UTF8, 0, password, -1, mbPassword, 1024, NULL, NULL);<br />
    mbPassword[1023] = 0;<br />
    CalculateSHA1Hash((BYTE *)mbPassword, strlen(mbPassword), hash);<br />
#else<br />
    CalculateSHA1Hash((BYTE *)password, strlen(password), hash);<br />
#endif<br />
    return !memcmp(hash, m_passwordHash, SHA1_DIGEST_SIZE);<br />
}</p>
<p dir="auto">void User::setPassword(const TCHAR *password, bool clearChangePasswdFlag)<br />
{<br />
#ifdef UNICODE<br />
    char mbPassword[1024];<br />
    WideCharToMultiByte(CP_UTF8, 0, password, -1, mbPassword, 1024, NULL, NULL);<br />
    mbPassword[1023] = 0;<br />
    CalculateSHA1Hash((BYTE *)mbPassword, strlen(mbPassword), m_passwordHash);<br />
#else<br />
    CalculateSHA1Hash((BYTE *)password, strlen(password), m_passwordHash);<br />
#endif<br />
    m_graceLogins = MAX_GRACE_LOGINS;<br />
    m_flags |= UF_MODIFIED;<br />
    if (clearChangePasswdFlag)<br />
        m_flags &amp;= ~UF_CHANGE_PASSWORD;<br />
}</p>
<p dir="auto">tested it on Russian, Chinese, and Japanese characters - works fine. This solution, however, will cause problem for already set non-latin1 passwords - they will need to be reset.</p>
<p dir="auto">Changed code already commited to svn.</p>
<p dir="auto">Best regards,<br />
Victor</p>
]]></description><link>https://forum.netxms.org/post/5202</link><guid isPermaLink="true">https://forum.netxms.org/post/5202</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Sat, 26 Feb 2011 11:28:14 GMT</pubDate></item></channel></rss>