From 13881b4493836fe8d8804f221449dfe5d06d2dde Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Tue, 22 Jun 2021 21:11:34 +0200 Subject: [PATCH] svg_loader: correct parsing ColorStop offset values Values different from numbers and percentages should be ignored and the default values should be applied (zeros). --- src/loaders/svg/tvgSvgLoader.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/loaders/svg/tvgSvgLoader.cpp b/src/loaders/svg/tvgSvgLoader.cpp index 883d96b..c870bb9 100644 --- a/src/loaders/svg/tvgSvgLoader.cpp +++ b/src/loaders/svg/tvgSvgLoader.cpp @@ -141,10 +141,17 @@ static float _gradientToFloat(const SvgParser* svgParse, const char* str, SvgPar static float _toOffset(const char* str) { char* end = nullptr; + auto strEnd = str + strlen(str); float parsedValue = svgUtilStrtof(str, &end); - if (strstr(str, "%")) parsedValue = parsedValue / 100.0; + end = _skipSpace(end, nullptr); + auto ptr = strstr(str, "%"); + + if (ptr) { + parsedValue = parsedValue / 100.0; + if (end != ptr || (end + 1) != strEnd) return 0; + } else if (end != strEnd) return 0; return parsedValue; } -- 2.7.4