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

Reply via email to