[Tizen] Fix Svace issue in webp-loader 36/269136/2 accepted/tizen/6.5/unified/20220113.123418 submit/tizen_6.5/20220113.015715
authorseungho <sbsh.baek@samsung.com>
Mon, 10 Jan 2022 09:07:00 +0000 (18:07 +0900)
committerseungho <sbsh.baek@samsung.com>
Mon, 10 Jan 2022 09:11:26 +0000 (18:11 +0900)
Change-Id: I98c7717dd9e0d9f2e0ac614a29fa336c68c3354e
Signed-off-by: seungho <sbsh.baek@samsung.com>
dali/internal/imaging/common/webp-loading.cpp

index 88a8eb5..346c12d 100644 (file)
@@ -352,22 +352,26 @@ Dali::Devel::PixelBuffer WebPLoading::DecodeFrame(uint32_t frameIndex)
 {
   Dali::Devel::PixelBuffer pixelBuffer;
 #ifdef DALI_ANIMATED_WEBP_ENABLED
-  if(mImpl->mLatestLoadedFrame > static_cast<int32_t>(frameIndex))
+  if(mImpl->mLatestLoadedFrame >= static_cast<int32_t>(frameIndex))
   {
     mImpl->mLatestLoadedFrame = INITIAL_INDEX;
     WebPAnimDecoderReset(mImpl->mWebPAnimDecoder);
   }
 
-  uint8_t* frameBuffer;
   int32_t timestamp;
+  uint8_t* frameBuffer = nullptr;
   for(; mImpl->mLatestLoadedFrame < static_cast<int32_t>(frameIndex);)
   {
     WebPAnimDecoderGetNext(mImpl->mWebPAnimDecoder, &frameBuffer, &timestamp);
     mImpl->mTimeStamp[++mImpl->mLatestLoadedFrame] = timestamp;
   }
-  const int bufferSize = mImpl->mWebPAnimInfo.canvas_width * mImpl->mWebPAnimInfo.canvas_height * sizeof(uint32_t);
-  pixelBuffer = Dali::Devel::PixelBuffer::New(mImpl->mWebPAnimInfo.canvas_width, mImpl->mWebPAnimInfo.canvas_height, Dali::Pixel::RGBA8888);
-  memcpy(pixelBuffer.GetBuffer(), frameBuffer, bufferSize);
+
+  if(frameBuffer != nullptr)
+  {
+    const int bufferSize = mImpl->mWebPAnimInfo.canvas_width * mImpl->mWebPAnimInfo.canvas_height * sizeof(uint32_t);
+    pixelBuffer          = Dali::Devel::PixelBuffer::New(mImpl->mWebPAnimInfo.canvas_width, mImpl->mWebPAnimInfo.canvas_height, Dali::Pixel::RGBA8888);
+    memcpy(pixelBuffer.GetBuffer(), frameBuffer, bufferSize);
+  }
 
 #endif
   return pixelBuffer;