ref: 410689f7ca5d53b3741a64f94a6d3ae3224f5a6a
parent: b37cda248234162033e3e11b0335f3131cdfe488
parent: e7e3b4f37f0bfdadcb779e22d40a77dbe31cc87a
author: huili2 <huili2@cisco.com>
date: Tue Oct 13 05:04:51 EDT 2015
Merge pull request #2147 from HaiboZhu/Bugfix_uninit_strcat Init the string value and add protection for WelsStrcat()
--- a/codec/common/inc/crt_util_safe_x.h
+++ b/codec/common/inc/crt_util_safe_x.h
@@ -79,7 +79,7 @@
int32_t WelsSnprintf (char* buffer, int32_t sizeOfBuffer, const char* format, ...);
char* WelsStrncpy (char* dest, int32_t sizeInBytes, const char* src);
-char* WelsStrcat (char* dest, int32_t sizeInBytes, const char* src);
+char* WelsStrcat (char* dest, uint32_t sizeInBytes, const char* src);
int32_t WelsVsnprintf (char* buffer, int32_t sizeOfBuffer, const char* format, va_list argptr);
WelsFileHandle* WelsFopen (const char* filename, const char* mode);
--- a/codec/common/src/crt_util_safe_x.cpp
+++ b/codec/common/src/crt_util_safe_x.cpp
@@ -75,8 +75,8 @@
return iRc;
}
-char* WelsStrncpy (char* pDest, int32_t iSizeInBytes, const char* kpSrc) {
- strncpy_s (pDest, iSizeInBytes, kpSrc, _TRUNCATE);
+char* WelsStrncpy (char* pDest, uint32_t uiSizeInBytes, const char* kpSrc) {
+ strncpy_s (pDest, uiSizeInBytes, kpSrc, _TRUNCATE);
return pDest;
}
@@ -242,9 +242,11 @@
#endif
-char* WelsStrcat (char* pDest, int32_t iSizeInBytes, const char* kpSrc) {
- int32_t iCurLen = (int32_t)strlen (pDest);
- return WelsStrncpy (pDest + iCurLen, iSizeInBytes - iCurLen, kpSrc);
+char* WelsStrcat (char* pDest, uint32_t uiSizeInBytes, const char* kpSrc) {
+ uint32_t uiCurLen = strlen (pDest);
+ if (uiSizeInBytes > uiCurLen)
+ return WelsStrncpy (pDest + uiCurLen, uiSizeInBytes - uiCurLen, kpSrc);
+ return pDest;
}
int32_t WelsFwrite (const void* kpBuffer, int32_t iSize, int32_t iCount, WelsFileHandle* pFp) {
--- a/codec/common/src/utils.cpp
+++ b/codec/common/src/utils.cpp
@@ -50,7 +50,7 @@
void WelsLog (SLogContext* logCtx, int32_t iLevel, const char* kpFmt, ...) {
va_list vl;
- char pTraceTag[MAX_LOG_SIZE];
+ char pTraceTag[MAX_LOG_SIZE] = {0};
switch (iLevel) {
case WELS_LOG_ERROR:
WelsSnprintf (pTraceTag, MAX_LOG_SIZE, "[OpenH264] this = 0x%p, Error:", logCtx->pCodecInstance);