Reviewed-by: Samer El-Haj-Mahmoud <el...@hpe.com>
-----Original Message----- From: Qiu, Shumin [shumin....@intel.com] Received: Sunday, 03 Jan 2016, 9:06PM To: El-Haj-Mahmoud, Samer [samer.el-haj-mahm...@hpe.com]; Shia, Cinnamon [cinnamon.s...@hpe.com] CC: edk2-devel@lists.01.org [edk2-devel@lists.01.org] Subject: FW: [PATCH] MdeModulePkg: For RegularExpressionDxe use 'sprintf_s' to replace 'sprintf'. Hi Samer and Cinnamon, Do you have any comments? -Shumin -----Original Message----- From: Qiu, Shumin Sent: Wednesday, December 30, 2015 7:47 PM To: edk2-devel@lists.01.org Cc: Qiu, Shumin; Dong, Eric Subject: [PATCH] MdeModulePkg: For RegularExpressionDxe use 'sprintf_s' to replace 'sprintf'. Function 'sprintf' has potential buffer overflow risk. This patch use 'sprintf_s' to improve the code. Cc: Eric Dong <eric.d...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Qiu Shumin <shumin....@intel.com> Reviewed-by: Yao Jiewen <jiewen....@intel.com> --- .../Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.c | 4 ++-- .../Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.h | 2 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c | 4 ++-- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c | 2 +- .../Universal/RegularExpressionDxe/Oniguruma/regversion.c | 8 ++++++-- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.c index 081fcb3..aaa5d3d 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUef +++ iPort.c @@ -14,13 +14,13 @@ **/ #include "OnigurumaUefiPort.h" -int sprintf(char *str, char const *fmt, ...) +int sprintf_s(char *str, size_t sizeOfBuffer, char const *fmt, ...) { VA_LIST Marker; int NumberOfPrinted; VA_START (Marker, fmt); - NumberOfPrinted = (int)AsciiVSPrint (str, 1000000, fmt, Marker); + NumberOfPrinted = (int)AsciiVSPrint (str, sizeOfBuffer, fmt, Marker); VA_END (Marker); return NumberOfPrinted; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.h index 18f2851..cb791f8 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUef +++ iPort.h @@ -59,7 +59,7 @@ typedef UINTN size_t; int OnigStrCmp (char* Str1, char* Str2); -int sprintf (char *str, char const *fmt, ...); +int sprintf_s (char *str, size_t sizeOfBuffer, char const *fmt, ...); #define exit(n) ASSERT(FALSE); diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c index c3ec362..fbc764a 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c @@ -191,12 +191,12 @@ onig_error_code_to_format(int code) static void sprint_byte(char* s, unsigned int v) { - sprintf(s, "%02x", (v & 0377)); + sprintf_s(s, sizeof("00"), "%02x", (v & 0377)); } static void sprint_byte_with_x(char* s, unsigned int v) { - sprintf(s, "\\x%02x", (v & 0377)); + sprintf_s(s, sizeof("\\x00"), "\\x%02x", (v & 0377)); } static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c index e72448a..fb1b928 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c @@ -88,7 +88,7 @@ regerror(int posix_ecode, const regex_t* reg ARG_UNUSED, char* buf, s = ""; } else { - sprintf(tbuf, "undefined error code (%d)", posix_ecode); + sprintf_s(tbuf, sizeof(tbuf), "undefined error code (%d)", + posix_ecode); s = tbuf; } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c index 087c6ad..2c81244 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c @@ -36,7 +36,9 @@ onig_version(void) { static char s[12]; - sprintf(s, "%d.%d.%d", + sprintf_s(s, + sizeof(s), + "%d.%d.%d", ONIGURUMA_VERSION_MAJOR, ONIGURUMA_VERSION_MINOR, ONIGURUMA_VERSION_TEENY); @@ -48,7 +50,9 @@ onig_copyright(void) { static char s[58]; - sprintf(s, "Oniguruma %d.%d.%d : Copyright (C) 2002-2008 K.Kosako", + sprintf_s(s, + sizeof(s), + "Oniguruma %d.%d.%d : Copyright (C) 2002-2008 K.Kosako", ONIGURUMA_VERSION_MAJOR, ONIGURUMA_VERSION_MINOR, ONIGURUMA_VERSION_TEENY); -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel