From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 86046 invoked by alias); 30 Nov 2017 18:09:14 -0000 Mailing-List: contact newlib-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: newlib-cvs-owner@sourceware.org Received: (qmail 86002 invoked by uid 9642); 30 Nov 2017 18:09:14 -0000 Date: Thu, 30 Nov 2017 18:09:00 -0000 Message-ID: <20171130180914.85999.qmail@sourceware.org> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Yaakov Selkowitz To: newlib-cvs@sourceware.org Subject: [newlib-cygwin] ssp: add Object Size Checking for stdlib.h X-Act-Checkin: newlib-cygwin X-Git-Author: Yaakov Selkowitz X-Git-Refname: refs/heads/master X-Git-Oldrev: 0fd2c9bd1290c84d2160191d105147bf75629411 X-Git-Newrev: 1e43e181c2b4d135e2407b8df1e58ea5c1a9bb82 X-SW-Source: 2017-q4/txt/msg00043.txt.bz2 https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=1e43e181c2b4d135e2407b8df1e58ea5c1a9bb82 commit 1e43e181c2b4d135e2407b8df1e58ea5c1a9bb82 Author: Yaakov Selkowitz Date: Wed Nov 29 21:17:09 2017 -0600 ssp: add Object Size Checking for stdlib.h Signed-off-by: Yaakov Selkowitz Diff: --- newlib/libc/include/ssp/stdlib.h | 30 ++++++++++++++++++++++++++++++ newlib/libc/include/stdlib.h | 4 ++++ newlib/libc/ssp/ssp.tex | 4 ++++ 3 files changed, 38 insertions(+) diff --git a/newlib/libc/include/ssp/stdlib.h b/newlib/libc/include/ssp/stdlib.h new file mode 100644 index 0000000..d5edb6d --- /dev/null +++ b/newlib/libc/include/ssp/stdlib.h @@ -0,0 +1,30 @@ +#ifndef _SSP_STDLIB_H_ +#define _SSP_STDLIB_H_ + +#include + +#if __SSP_FORTIFY_LEVEL > 0 +__BEGIN_DECLS + +__ssp_decl(size_t, mbstowcs, (wchar_t *__buf, const char *__src, size_t __n)) +{ + if (__buf != NULL) + __ssp_check(__buf, __n * sizeof(wchar_t), __ssp_bos); + return __ssp_real_mbstowcs (__buf, __src, __n); +} + +__ssp_redirect_raw(size_t, wcstombs, \ + (char *__buf, const wchar_t *__src, size_t __len), \ + (__buf, __src, __len), __buf != NULL, __ssp_bos); + +__ssp_decl(int, wctomb, (char *__buf, wchar_t __wc)) +{ + if (__buf != NULL) + __ssp_check(__buf, MB_CUR_MAX, __ssp_bos); + return __ssp_real_wctomb (__buf, __wc); +} + +__END_DECLS + +#endif /* __SSP_FORTIFY_LEVEL > 0 */ +#endif /* _SSP_STDLIB_H_ */ diff --git a/newlib/libc/include/stdlib.h b/newlib/libc/include/stdlib.h index af5bfec..c3c591d 100644 --- a/newlib/libc/include/stdlib.h +++ b/newlib/libc/include/stdlib.h @@ -334,4 +334,8 @@ _Noreturn void _END_STD_C +#if __SSP_FORTIFY_LEVEL > 0 +#include +#endif + #endif /* _STDLIB_H_ */ diff --git a/newlib/libc/ssp/ssp.tex b/newlib/libc/ssp/ssp.tex index f8440bd..b30ecf1 100644 --- a/newlib/libc/ssp/ssp.tex +++ b/newlib/libc/ssp/ssp.tex @@ -39,6 +39,10 @@ fgets fread_unlocked sprintf fgets_unlocked gets vsnprintf fread snprintf vsprintf +@exdent @emph{Stdlib functions:} +mbstowcs wcstombs wctomb + @exdent @emph{System functions:} getcwd read readlink + @end example