Check Layer.mExtra and Transform.mExtra before dereferencing accepted/tizen/unified/20210625.170433 submit/tizen/20210621.044901
authorNicholas Guriev <nicholas@guriev.su>
Sun, 23 May 2021 11:04:14 +0000 (14:04 +0300)
committerHermet Park <chuneon.park@samsung.com>
Mon, 21 Jun 2021 02:54:07 +0000 (11:54 +0900)
Change-Id: I830ddb91a1ab81d3848633512ef1c23b37654883

src/lottie/lottieparser.cpp

index 70a132f636c3e8006a0e9fdf8c2e3e0c7e0d16d5..3cb3f76005cc70f0b6ae3d488aff2189fb62ddcb 100644 (file)
@@ -1060,7 +1060,7 @@ model::Layer *LottieParserImpl::parseLayer()
         staticFlag &= child->isStatic();
     }
 
-    if (layer->hasMask()) {
+    if (layer->hasMask() && layer->mExtra) {
         for (const auto &mask : layer->mExtra->mMasks) {
             staticFlag &= mask->isStatic();
         }
@@ -1560,10 +1560,13 @@ model::Transform *LottieParserImpl::parseTransformObject(bool ddd)
         } else if (0 == strcmp(key, "hd")) {
             objT->setHidden(GetBool());
         } else if (0 == strcmp(key, "rx")) {
+            if (!obj->mExtra) return nullptr;
             parseProperty(obj->mExtra->m3DRx);
         } else if (0 == strcmp(key, "ry")) {
+            if (!obj->mExtra) return nullptr;
             parseProperty(obj->mExtra->m3DRy);
         } else if (0 == strcmp(key, "rz")) {
+            if (!obj->mExtra) return nullptr;
             parseProperty(obj->mExtra->m3DRz);
         } else {
             Skip(key);