<?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[snprintf overflow]]></title><description><![CDATA[<p dir="auto">У меня netxmsd аварийно завершается при определённых действиях. Дебаг-символы и бектрейс показали, что валится на вызове _sntprintf.</p>
<p dir="auto">src/server/core/subnet.cpp, функция void Subnet::setCorrectMask(DWORD dwAddr, DWORD dwMask):</p>
<pre><code>                // Change name
                _sntprintf(m_szName, 128, _T("%s/%d"), IpToStr(dwAddr, szBuffer), BitsInMask(dwMask));
</code></pre>
<p dir="auto">Как я понял из src/server/include/nms_objects.h определение m_szName (наследуется Subnet от NetObj) такое:</p>
<pre><code>TCHAR m_szName[MAX_OBJECT_NAME];
</code></pre>
<p dir="auto">MAX_OBJECT_NAME нашёл в include/nxlog.h:</p>
<pre><code>#define MAX_OBJECT_NAME          64
</code></pre>
<p dir="auto">Где что менять теперь? <img src="https://forum.netxms.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=72b86a538fc" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:1.4em;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
]]></description><link>https://forum.netxms.org/topic/1482/snprintf-overflow</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 10:06:46 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/1482.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Dec 2011 16:44:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to snprintf overflow on Mon, 05 Dec 2011 17:52:06 GMT]]></title><description><![CDATA[<p dir="auto">Spasibo, popravil.</p>
]]></description><link>https://forum.netxms.org/post/6412</link><guid isPermaLink="true">https://forum.netxms.org/post/6412</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Mon, 05 Dec 2011 17:52:06 GMT</pubDate></item><item><title><![CDATA[Reply to snprintf overflow on Mon, 05 Dec 2011 17:20:52 GMT]]></title><description><![CDATA[<p dir="auto">Ещё нашёл:<br />
src/server/core/userdb_objects.cpp:66</p>
<pre><code>        nx_strncpy(m_name, name, MAX_OBJECT_NAME);
</code></pre>
<p dir="auto">А m_name имеет размер MAX_USER_NAME.</p>
]]></description><link>https://forum.netxms.org/post/6411</link><guid isPermaLink="true">https://forum.netxms.org/post/6411</guid><dc:creator><![CDATA[user318]]></dc:creator><pubDate>Mon, 05 Dec 2011 17:20:52 GMT</pubDate></item><item><title><![CDATA[Reply to snprintf overflow on Mon, 05 Dec 2011 17:15:32 GMT]]></title><description><![CDATA[<p dir="auto">Pervij i poslednij uze bili v trunke popravleni, ostal'noe popravil, spasibo. Segodnja vecherom vilozu nakonec 1.1.7, tam vse budet ispravleno uze.</p>
]]></description><link>https://forum.netxms.org/post/6409</link><guid isPermaLink="true">https://forum.netxms.org/post/6409</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Mon, 05 Dec 2011 17:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to snprintf overflow on Mon, 05 Dec 2011 17:00:50 GMT]]></title><description><![CDATA[<p dir="auto">src/agent/subagents/linux/drbd.cpp:120:</p>
<pre><code>                                nx_strncpy(s_drbdVersion, &amp;line[pmatch[1].rm_so], 64);
</code></pre>
<p dir="auto">В том же файле выше:</p>
<pre><code>static char s_drbdVersion[32] = "0.0.0";
</code></pre>
]]></description><link>https://forum.netxms.org/post/6408</link><guid isPermaLink="true">https://forum.netxms.org/post/6408</guid><dc:creator><![CDATA[user318]]></dc:creator><pubDate>Mon, 05 Dec 2011 17:00:50 GMT</pubDate></item><item><title><![CDATA[Reply to snprintf overflow on Mon, 05 Dec 2011 16:53:41 GMT]]></title><description><![CDATA[<p dir="auto">src/agent/core/policy.cpp:107</p>
<pre><code>                DWORD size = msg-&gt;GetVariableBinary(VID_CONFIG_FILE_DATA, 0, NULL);
</code></pre>
<p dir="auto">Оно говорит, что GetVariableBinary(DWORD, BYTE*, DWORD), а 3-м аргументом в качестве DWORD передаётся NULL.</p>
]]></description><link>https://forum.netxms.org/post/6407</link><guid isPermaLink="true">https://forum.netxms.org/post/6407</guid><dc:creator><![CDATA[user318]]></dc:creator><pubDate>Mon, 05 Dec 2011 16:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to snprintf overflow on Mon, 05 Dec 2011 16:50:18 GMT]]></title><description><![CDATA[<p dir="auto">Сюда до кучи запощу. При компиляции gentoo выдаёт диагностику напарсенную из компиляции видимо. Там в том числе и про snprintf было. Так же там есть про:<br />
src/server/tools/nxdbmgr/upgrade.cpp</p>
<pre><code>static struct
{
   int version;
   int newVersion;
   BOOL (* fpProc)(int, int);
} m_dbUpgradeMap[] =
{
   { 14, 15, H_UpgradeFromV14 },
...
        { 243, 244, H_UpgradeFromV243 },
   { 0, NULL }
};
</code></pre>
<p dir="auto">NULL здесь не очень красиво выглядит.</p>
]]></description><link>https://forum.netxms.org/post/6406</link><guid isPermaLink="true">https://forum.netxms.org/post/6406</guid><dc:creator><![CDATA[user318]]></dc:creator><pubDate>Mon, 05 Dec 2011 16:50:18 GMT</pubDate></item></channel></rss>