diff --git a/extensions/bintools/sdk/smsdk_ext.h b/extensions/bintools/sdk/smsdk_ext.h index f75071ac..4324a11b 100644 --- a/extensions/bintools/sdk/smsdk_ext.h +++ b/extensions/bintools/sdk/smsdk_ext.h @@ -269,11 +269,15 @@ extern IServerGameDLL *gamedll; #define SM_GET_IFACE(prefix, addr) \ if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s (version: %d)", SMINTERFACE_##prefix##_NAME, SMINTERFACE_##prefix##_VERSION); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } /** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */ #define SM_GET_LATE_IFACE(prefix, addr) \ @@ -282,11 +286,15 @@ extern IServerGameDLL *gamedll; #define SM_CHECK_IFACE(prefix, addr) \ if (!addr) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } #endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_ diff --git a/extensions/cstrike/sdk/smsdk_ext.h b/extensions/cstrike/sdk/smsdk_ext.h index 7a133bf8..905e13a6 100644 --- a/extensions/cstrike/sdk/smsdk_ext.h +++ b/extensions/cstrike/sdk/smsdk_ext.h @@ -273,11 +273,15 @@ extern IServerGameDLL *gamedll; #define SM_GET_IFACE(prefix, addr) \ if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s (version: %d)", SMINTERFACE_##prefix##_NAME, SMINTERFACE_##prefix##_VERSION); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } /** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */ #define SM_GET_LATE_IFACE(prefix, addr) \ @@ -286,11 +290,15 @@ extern IServerGameDLL *gamedll; #define SM_CHECK_IFACE(prefix, addr) \ if (!addr) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } #endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_ diff --git a/extensions/geoip/sdk/smsdk_ext.h b/extensions/geoip/sdk/smsdk_ext.h index f75071ac..4324a11b 100644 --- a/extensions/geoip/sdk/smsdk_ext.h +++ b/extensions/geoip/sdk/smsdk_ext.h @@ -269,11 +269,15 @@ extern IServerGameDLL *gamedll; #define SM_GET_IFACE(prefix, addr) \ if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s (version: %d)", SMINTERFACE_##prefix##_NAME, SMINTERFACE_##prefix##_VERSION); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } /** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */ #define SM_GET_LATE_IFACE(prefix, addr) \ @@ -282,11 +286,15 @@ extern IServerGameDLL *gamedll; #define SM_CHECK_IFACE(prefix, addr) \ if (!addr) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } #endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_ diff --git a/extensions/mysql/sdk/smsdk_ext.h b/extensions/mysql/sdk/smsdk_ext.h index f75071ac..4324a11b 100644 --- a/extensions/mysql/sdk/smsdk_ext.h +++ b/extensions/mysql/sdk/smsdk_ext.h @@ -269,11 +269,15 @@ extern IServerGameDLL *gamedll; #define SM_GET_IFACE(prefix, addr) \ if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s (version: %d)", SMINTERFACE_##prefix##_NAME, SMINTERFACE_##prefix##_VERSION); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } /** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */ #define SM_GET_LATE_IFACE(prefix, addr) \ @@ -282,11 +286,15 @@ extern IServerGameDLL *gamedll; #define SM_CHECK_IFACE(prefix, addr) \ if (!addr) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } #endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_ diff --git a/extensions/sdktools/sdk/smsdk_ext.h b/extensions/sdktools/sdk/smsdk_ext.h index 69fc3b0e..fdda6ad3 100644 --- a/extensions/sdktools/sdk/smsdk_ext.h +++ b/extensions/sdktools/sdk/smsdk_ext.h @@ -279,11 +279,15 @@ extern IServerGameDLL *gamedll; #define SM_GET_IFACE(prefix, addr) \ if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s (version: %d)", SMINTERFACE_##prefix##_NAME, SMINTERFACE_##prefix##_VERSION); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } /** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */ #define SM_GET_LATE_IFACE(prefix, addr) \ @@ -292,11 +296,15 @@ extern IServerGameDLL *gamedll; #define SM_CHECK_IFACE(prefix, addr) \ if (!addr) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } #endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_ diff --git a/extensions/sqlite/sdk/smsdk_ext.h b/extensions/sqlite/sdk/smsdk_ext.h index f75071ac..4324a11b 100644 --- a/extensions/sqlite/sdk/smsdk_ext.h +++ b/extensions/sqlite/sdk/smsdk_ext.h @@ -269,11 +269,15 @@ extern IServerGameDLL *gamedll; #define SM_GET_IFACE(prefix, addr) \ if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s (version: %d)", SMINTERFACE_##prefix##_NAME, SMINTERFACE_##prefix##_VERSION); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } /** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */ #define SM_GET_LATE_IFACE(prefix, addr) \ @@ -282,11 +286,15 @@ extern IServerGameDLL *gamedll; #define SM_CHECK_IFACE(prefix, addr) \ if (!addr) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } #endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_ diff --git a/extensions/topmenus/sdk/smsdk_ext.h b/extensions/topmenus/sdk/smsdk_ext.h index 83038a72..b37ce03f 100644 --- a/extensions/topmenus/sdk/smsdk_ext.h +++ b/extensions/topmenus/sdk/smsdk_ext.h @@ -290,11 +290,15 @@ extern IServerGameDLL *gamedll; #define SM_GET_IFACE(prefix, addr) \ if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s (version: %d)", SMINTERFACE_##prefix##_NAME, SMINTERFACE_##prefix##_VERSION); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } /** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */ #define SM_GET_LATE_IFACE(prefix, addr) \ @@ -303,11 +307,15 @@ extern IServerGameDLL *gamedll; #define SM_CHECK_IFACE(prefix, addr) \ if (!addr) \ { \ - if (error) \ + if (error != NULL && maxlength) \ { \ - snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ - return false; \ + size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \ + if (len >= maxlength) \ + { \ + error[maxlength - 1] = '\0'; \ + } \ } \ + return false; \ } #endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_