fixed server crash if SNMP functions used in NXSL
authorVictor Kirhenshtein <victor@netxms.org>
Mon, 19 May 2014 18:08:57 +0000 (21:08 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Mon, 19 May 2014 18:08:57 +0000 (21:08 +0300)
include/nxsnmp.h
src/libnetxms/unicode.cpp
src/server/core/cdp.cpp

index e27ff9d..9ed7834 100644 (file)
@@ -596,7 +596,7 @@ public:
        size_t getContextEngineIdLength() { return m_contextEngineIdLen; }
        BYTE *getContextEngineId() { return m_contextEngineId; }
 
-   void unlinkVariables() { m_variables->clear(); }
+   void unlinkVariables() { m_variables->setOwner(false); m_variables->clear(); m_variables->setOwner(true); }
    void bindVariable(SNMP_Variable *pVar);
 };
 
index d7871db..1c91b0f 100644 (file)
@@ -314,9 +314,9 @@ inline int MultiByteToWideCharIconv(int iCodePage, DWORD dwFlags, const char *pB
 
    inbuf = pByteStr;
    inbytes = (cchByteChar == -1) ? strlen(pByteStr) + 1 : cchByteChar;
-   outbuf = (char *) pWideCharStr;
+   outbuf = (char *)pWideCharStr;
    outbytes = cchWideChar * sizeof(WCHAR);
-   nRet = iconv(cd, (ICONV_CONST char **) &inbuf, &inbytes, &outbuf, &outbytes);
+   nRet = iconv(cd, (ICONV_CONST char **)&inbuf, &inbytes, &outbuf, &outbytes);
    iconv_close(cd);
 
    if (nRet == -1)
index d00125c..ed99af8 100644 (file)
@@ -61,7 +61,7 @@ static UINT32 CDPTopoHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Transp
                if (pRespPDU->getNumVariables() >= 1)
                {
                        TCHAR ifName[MAX_CONNECTOR_NAME] = _T("");
-                       pRespPDU->getVariable(0)->getValueAsString(ifName, 64);
+                       pRespPDU->getVariable(0)->getValueAsString(ifName, MAX_CONNECTOR_NAME);
                        DbgPrintf(6, _T("CDP(%s [%d]): remote port is \"%s\""), node->Name(), node->Id(), ifName);
                        Interface *ifRemote = remoteNode->findInterface(ifName);
                        if (ifRemote != NULL)