Commit 5c41f379 for openh264

commit 5c41f3797988902f1db625e06817397641642a8c
Author: BenzhengZhang <140143892+BenzhengZhang@users.noreply.github.com>
Date:   Thu Aug 27 10:39:17 2026 +0800

    test/decoder: fix sanitizer findings in UT and timeout math (#3986)

    Co-authored-by: benzzhan <benzzhan@cisco.com>

diff --git a/codec/decoder/core/src/wels_decoder_thread.cpp b/codec/decoder/core/src/wels_decoder_thread.cpp
index fdf4b4d7..0b6b7721 100644
--- a/codec/decoder/core/src/wels_decoder_thread.cpp
+++ b/codec/decoder/core/src/wels_decoder_thread.cpp
@@ -128,9 +128,11 @@ void SemDestroy (SWelsDecSemphore* s) {
 static void getTimespecFromTimeout (struct timespec* ts, int32_t timeout) {
   struct timeval tv;
   gettimeofday (&tv, 0);
-  ts->tv_nsec = tv.tv_usec * 1000 + timeout * 1000000;
-  ts->tv_sec = tv.tv_sec + ts->tv_nsec / 1000000000;
-  ts->tv_nsec %= 1000000000;
+  const int64_t kNanosecondsPerSecond = 1000000000LL;
+  const int64_t iTimeoutNanoseconds = static_cast<int64_t> (tv.tv_usec) * 1000LL
+                                      + static_cast<int64_t> (timeout) * 1000000LL;
+  ts->tv_sec = tv.tv_sec + static_cast<time_t> (iTimeoutNanoseconds / kNanosecondsPerSecond);
+  ts->tv_nsec = static_cast<long> (iTimeoutNanoseconds % kNanosecondsPerSecond);
 }
 int EventCreate (SWelsDecEvent* e, int manualReset, int initialState) {
   if (pthread_mutex_init (& (e->m), NULL))
diff --git a/test/encoder/EncUT_EncoderExt.cpp b/test/encoder/EncUT_EncoderExt.cpp
index 69293fde..eb89660a 100644
--- a/test/encoder/EncUT_EncoderExt.cpp
+++ b/test/encoder/EncUT_EncoderExt.cpp
@@ -47,6 +47,7 @@ class EncoderInterfaceTest : public ::testing::Test {

     pSrcPic = new SSourcePicture;
     ASSERT_TRUE (pSrcPic != NULL);
+    memset (pSrcPic, 0, sizeof (SSourcePicture));

     pOption = new SEncParamExt();
     ASSERT_TRUE (pOption != NULL);