From 6cc3bdcf308ac3dea6df8dfe8cc3675f6ad60e88 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Mon, 11 Jun 2007 17:02:52 +0000 Subject: Ticket #333: Added buffer overflow detection in vsprintf emulation for Symbian git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1361 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib/src/pj/compat/string_compat.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'pjlib/src/pj/compat/string_compat.c') diff --git a/pjlib/src/pj/compat/string_compat.c b/pjlib/src/pj/compat/string_compat.c index 28f13123..d87bb967 100644 --- a/pjlib/src/pj/compat/string_compat.c +++ b/pjlib/src/pj/compat/string_compat.c @@ -19,6 +19,8 @@ #include #include #include +#include + #if defined(PJ_HAS_STRING_H) && PJ_HAS_STRING_H != 0 /* Nothing to do */ @@ -64,8 +66,16 @@ PJ_DEF(int) snprintf(char *s1, pj_size_t len, const char *s2, ...) PJ_DEF(int) vsnprintf(char *s1, pj_size_t len, const char *s2, va_list arg) { - PJ_UNUSED_ARG(len); - return vsprintf(s1,s2,arg); +#define MARK_CHAR ((char)255) + int rc; + + s1[len-1] = MARK_CHAR; + + rc = vsprintf(s1,s2,arg); + + pj_assert(s1[len-1] == MARK_CHAR || s1[len-1] == '\0'); + + return rc; } #endif -- cgit v1.2.3