From 83eb8ba37b8fb2da06e897375521fa44265df201 Mon Sep 17 00:00:00 2001 From: Jinny You Date: Mon, 13 May 2024 16:38:29 +0900 Subject: [PATCH] lottie/slot: Fix slot resetting bug When resetting back to animated property, system causes an UAF because frames have been freed. Mark frames in nullptr at the case, so it doesn't use frame data after freed. Issue: #2255 --- src/loaders/lottie/tvgLottieModel.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/loaders/lottie/tvgLottieModel.h b/src/loaders/lottie/tvgLottieModel.h index 41ab5b3d..75edd061 100644 --- a/src/loaders/lottie/tvgLottieModel.h +++ b/src/loaders/lottie/tvgLottieModel.h @@ -712,16 +712,19 @@ struct LottieSlot case LottieProperty::Type::ColorStop: { static_cast(pair->obj)->colorStops.release(); static_cast(pair->obj)->colorStops = *static_cast(pair->prop); + static_cast(pair->prop)->frames = nullptr; break; } case LottieProperty::Type::Color: { static_cast(pair->obj)->color.release(); static_cast(pair->obj)->color = *static_cast(pair->prop); + static_cast(pair->prop)->frames = nullptr; break; } case LottieProperty::Type::TextDoc: { static_cast(pair->obj)->doc.release(); static_cast(pair->obj)->doc = *static_cast(pair->prop); + static_cast(pair->prop)->frames = nullptr; break; } default: break;