File: Fix-crash-in-malformed-animations.patch

package info (click to toggle)
rlottie 0.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 9,864 kB
  • sloc: cpp: 20,368; asm: 221; ansic: 194; makefile: 15
file content (46 lines) | stat: -rw-r--r-- 1,622 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Description: Fix crash in malformed lottie animations.
Origin: https://github.com/desktop-app/rlottie/commit/3c280ce86f649c1ea07c7ace5ed58162607c0edd
Author: John Preston <johnprestonmail@gmail.com>
Acked-By: Nicholas Guriev <guriev-ns@ya.ru>
Last-Update: Sun, 19 Jul 2020 13:12:38 +0300

diff --git a/src/lottie/lottiemodel.h b/src/lottie/lottiemodel.h
index 4a5473d..d263e46 100644
--- a/src/lottie/lottiemodel.h
+++ b/src/lottie/lottiemodel.h
@@ -225,11 +225,13 @@ class LOTAnimInfo
 {
 public:
     T value(int frameNo) const {
+        if (mKeyFrames.empty())
+            return T();
+
         if (mKeyFrames.front().mStartFrame >= frameNo)
             return mKeyFrames.front().mValue.mStartValue;
-        if(mKeyFrames.back().mEndFrame <= frameNo)
+        if (mKeyFrames.back().mEndFrame <= frameNo)
             return mKeyFrames.back().mValue.mEndValue;
-
         for(const auto &keyFrame : mKeyFrames) {
             if (frameNo >= keyFrame.mStartFrame && frameNo < keyFrame.mEndFrame)
                 return keyFrame.value(frameNo);
@@ -238,7 +240,8 @@ public:
     }
 
     float angle(int frameNo) const {
-        if ((mKeyFrames.front().mStartFrame >= frameNo) ||
+        if (mKeyFrames.empty() ||
+            (mKeyFrames.front().mStartFrame >= frameNo) ||
             (mKeyFrames.back().mEndFrame <= frameNo) )
             return 0;
 
@@ -250,6 +253,9 @@ public:
     }
 
     bool changed(int prevFrame, int curFrame) const {
+        if (mKeyFrames.empty())
+            return false;
+
         auto first = mKeyFrames.front().mStartFrame;
         auto last = mKeyFrames.back().mEndFrame;