Using original gets() is always unsafe.
From fb71db412b9184cbb84761f4f91ef872d1c42b25 Mon Sep 17 00:00:00 2001 From: Christian Franke <christian.fra...@t-online.de> Date: Wed, 4 Sep 2019 22:12:53 +0200 Subject: [PATCH] headers: _FORTIFY_SOURCE: Print warning if original gets() is called.
Signed-off-by: Christian Franke <christian.fra...@t-online.de> --- mingw-w64-headers/crt/stdio.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mingw-w64-headers/crt/stdio.h b/mingw-w64-headers/crt/stdio.h index 08d99f9d..551b79f3 100644 --- a/mingw-w64-headers/crt/stdio.h +++ b/mingw-w64-headers/crt/stdio.h @@ -789,7 +789,8 @@ int vsnprintf (char *__stream, size_t __n, const char *__format, __builtin_va_li #if __MINGW_FORTIFY_LEVEL > 0 char * __cdecl __gets_chk(char *, size_t); -char * __cdecl __mingw_call_gets(char *) __MINGW_ASM_CALL(gets); +char * __cdecl __mingw_call_gets_warn(char *) __MINGW_ASM_CALL(gets) + __attribute__((__warning__("Using gets() with unknown buffer size is always unsafe - use fgets() instead"))); char * __cdecl __mingw_call_fgets(char * __restrict__, int, FILE * __restrict__) __MINGW_ASM_CALL(fgets); size_t __cdecl __mingw_call_fread(void * __restrict__, size_t, size_t, FILE * __restrict__) __MINGW_ASM_CALL(fread); char * __cdecl __mingw_call_tmpnam(char *) __MINGW_ASM_CALL(tmpnam); @@ -799,7 +800,7 @@ char * gets(char * __dst) { if (__mingw_bos_known(__dst)) return __gets_chk(__dst, __mingw_bos(__dst)); - return __mingw_call_gets(__dst); + return __mingw_call_gets_warn(__dst); } __mingw_bos_extern_ovr -- 2.21.0
_______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public