fixed server crash; added attribute "format" to debug functions
authorVictor Kirhenshtein <victor@netxms.org>
Fri, 17 Jan 2014 18:07:09 +0000 (20:07 +0200)
committerVictor Kirhenshtein <victor@netxms.org>
Fri, 17 Jan 2014 18:37:01 +0000 (20:37 +0200)
include/nms_agent.h
src/agent/core/nxagentd.h
src/server/core/hk.cpp
src/server/include/nxsrvapi.h

index 2bf881e..1d3855f 100644 (file)
@@ -511,9 +511,17 @@ BOOL LIBNETXMS_EXPORTABLE AgentGetParameterArgW(const TCHAR *param, int index, W
 #define AgentGetParameterArg AgentGetParameterArgA
 #endif
 
-void LIBNETXMS_EXPORTABLE AgentWriteLog(int logLevel, const TCHAR *format, ...);
+void LIBNETXMS_EXPORTABLE AgentWriteLog(int logLevel, const TCHAR *format, ...)
+#if defined(__GNUC__) || defined(__clang__)
+   __attribute__ ((format(printf, 2, 3)))
+#endif
+;
 void LIBNETXMS_EXPORTABLE AgentWriteLog2(int logLevel, const TCHAR *format, va_list args);
-void LIBNETXMS_EXPORTABLE AgentWriteDebugLog(int level, const TCHAR *format, ...);
+void LIBNETXMS_EXPORTABLE AgentWriteDebugLog(int level, const TCHAR *format, ...)
+#if defined(__GNUC__) || defined(__clang__)
+   __attribute__ ((format(printf, 2, 3)))
+#endif
+;
 void LIBNETXMS_EXPORTABLE AgentWriteDebugLog2(int level, const TCHAR *format, va_list args);
 void LIBNETXMS_EXPORTABLE AgentSendTrap(UINT32 dwEvent, const TCHAR *eventName, const char *pszFormat, ...);
 void LIBNETXMS_EXPORTABLE AgentSendTrap2(UINT32 dwEvent, const TCHAR *eventName, int nCount, TCHAR **ppszArgList);
index 77e2f5d..e99ea03 100644 (file)
@@ -371,8 +371,19 @@ public:
 BOOL Initialize();
 void Shutdown();
 void Main();
-void ConsolePrintf(const TCHAR *pszFormat, ...);
-void DebugPrintf(UINT32 dwSessionId, int level, const TCHAR *pszFormat, ...);
+
+void ConsolePrintf(const TCHAR *pszFormat, ...)
+#if defined(__GNUC__) || defined(__clang__)
+   __attribute__ ((format(printf, 1, 2)))
+#endif
+;
+
+void DebugPrintf(UINT32 dwSessionId, int level, const TCHAR *pszFormat, ...)
+#if defined(__GNUC__) || defined(__clang__)
+   __attribute__ ((format(printf, 3, 4)))
+#endif
+;
+
 void DebugPrintfCallback(int level, const TCHAR *pszFormat, va_list args);
 
 void BuildFullPath(TCHAR *pszFileName, TCHAR *pszFullPath);
index ec2bf0c..a484c35 100644 (file)
@@ -34,7 +34,7 @@ static void DeleteEmptySubnets()
                if (object->isEmpty())
                {
                   DbgPrintf(5, _T("DeleteEmptySubnets: subnet %s [%d] has %d refs, children: %d, parents: %d"),
-            object->Id(), object->Name(), object->getRefCount(), object->getChildCount(), object->getParentCount());
+            object->Name(), object->Id(), object->getRefCount(), object->getChildCount(), object->getParentCount());
                        object->deleteObject();
                }
       object->decRefCount();
index 195c71a..94d5717 100644 (file)
@@ -613,8 +613,18 @@ void LIBNXSRV_EXPORTABLE DestroyRoutingTable(ROUTING_TABLE *pRT);
 void LIBNXSRV_EXPORTABLE SortRoutingTable(ROUTING_TABLE *pRT);
 const TCHAR LIBNXSRV_EXPORTABLE *AgentErrorCodeToText(int iError);
 
-void LIBNXSRV_EXPORTABLE WriteLogOther(WORD wType, const TCHAR *format, ...);
-void LIBNXSRV_EXPORTABLE DbgPrintf(int level, const TCHAR *format, ...);
+void LIBNXSRV_EXPORTABLE WriteLogOther(WORD wType, const TCHAR *format, ...)
+#if defined(__GNUC__) || defined(__clang__)
+   __attribute__ ((format(printf, 2, 3)))
+#endif
+;
+
+void LIBNXSRV_EXPORTABLE DbgPrintf(int level, const TCHAR *format, ...)
+#if defined(__GNUC__) || defined(__clang__)
+   __attribute__ ((format(printf, 2, 3)))
+#endif
+;
+
 void LIBNXSRV_EXPORTABLE DbgPrintf2(int level, const TCHAR *format, va_list args);
 
 void LIBNXSRV_EXPORTABLE SetAgentDEP(int iPolicy);
@@ -629,20 +639,16 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpWalk(UINT32 dwVersion, SNMP_Transport *pTransport
                                                                 UINT32 (* pHandler)(UINT32, SNMP_Variable *, SNMP_Transport *, void *),
                                    void *pUserArg, BOOL bVerbose);
 
-
-//
-// Variables
-//
-
+/**
+ * Variables
+ */
 extern UINT32 LIBNXSRV_EXPORTABLE g_dwFlags;
 extern UINT32 LIBNXSRV_EXPORTABLE g_dwSNMPTimeout;
 extern UINT32 LIBNXSRV_EXPORTABLE g_debugLevel;
 
-
-//
-// Helper finctions for checking server flags
-//
-
+/**
+ * Helper finctions for checking server flags
+ */
 inline bool IsStandalone()
 {
        return !(g_dwFlags & AF_DAEMON) ? true : false;