From: Cloudwalk Date: Wed, 21 Jul 2021 15:49:53 +0000 (-0400) Subject: common: Use static_assert to prohibit unsafe functions more cleanly. Fixes compile... X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=afdff12f78e5a8441e6ba0c3a9721ee5f64ee7cc;p=xonotic%2Fdarkplaces.git common: Use static_assert to prohibit unsafe functions more cleanly. Fixes compile warning with mingw builds --- diff --git a/common.h b/common.h index d71899fe..fa826e60 100644 --- a/common.h +++ b/common.h @@ -228,11 +228,11 @@ char *va(char *buf, size_t buflen, const char *format, ...) DP_FUNC_PRINTF(3); #ifdef snprintf # undef snprintf #endif -#define snprintf DO_NOT_USE_SNPRINTF__USE_DPSNPRINTF +#define snprintf DP_STATIC_ASSERT(0, "snprintf is forbidden for portability reasons. Use dpsnprintf instead.") #ifdef vsnprintf # undef vsnprintf #endif -#define vsnprintf DO_NOT_USE_VSNPRINTF__USE_DPVSNPRINTF +#define vsnprintf DP_STATIC_ASSERT(0, "vsnprintf is forbidden for portability reasons. Use dpvsnprintf instead.") // dpsnprintf and dpvsnprintf // return the number of printed characters, excluding the final '\0' @@ -244,15 +244,15 @@ extern int dpvsnprintf (char *buffer, size_t buffersize, const char *format, va_ // A bunch of functions are forbidden for security reasons (and also to please MSVS 2005, for some of them) // LadyHavoc: added #undef lines here to avoid warnings in Linux #undef strcat -#define strcat DO_NOT_USE_STRCAT__USE_STRLCAT_OR_MEMCPY +#define strcat DP_STATIC_ASSERT(0, "strcat is forbidden for security reasons. Use strlcat or memcpy instead.") #undef strncat -#define strncat DO_NOT_USE_STRNCAT__USE_STRLCAT_OR_MEMCPY +#define strncat DP_STATIC_ASSERT(0, "strncat is forbidden for security reasons. Use strlcat or memcpy instead.") #undef strcpy -#define strcpy DO_NOT_USE_STRCPY__USE_STRLCPY_OR_MEMCPY +#define strcpy DP_STATIC_ASSERT(0, "strcpy is forbidden for security reasons. Use strlcpy or memcpy instead.") #undef strncpy -#define strncpy DO_NOT_USE_STRNCPY__USE_STRLCPY_OR_MEMCPY -//#undef sprintf -//#define sprintf DO_NOT_USE_SPRINTF__USE_DPSNPRINTF +#define strncpy DP_STATIC_ASSERT(0, "strncpy is forbidden for security reasons. Use strlcpy or memcpy instead.") +#undef sprintf +#define sprintf DP_STATIC_ASSERT(0, "sprintf is forbidden for security reasons. Use dpsnprintf instead.") //============================================================================ diff --git a/sys_sdl.c b/sys_sdl.c index 15a626d3..3f37a8e4 100644 --- a/sys_sdl.c +++ b/sys_sdl.c @@ -1,5 +1,5 @@ #ifdef WIN32 -#include +#include // Include this BEFORE darkplaces.h because it uses strncpy which trips DP_STATIC_ASSERT #include "conio.h" #else #include