From 5ad7f0c1e72d0bb26ff6d054bb22563b62875d62 Mon Sep 17 00:00:00 2001 From: eli_w Date: Sat, 22 Mar 2025 20:46:49 +0800 Subject: [PATCH] patterns/ani: Improved compatibility with error size defined in ani files (#354) --- patterns/ani.hexpat | 7 ++++++- .../test_data/ani.compatibility.hexpat.ani | Bin 0 -> 9188 bytes 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 tests/patterns/test_data/ani.compatibility.hexpat.ani diff --git a/patterns/ani.hexpat b/patterns/ani.hexpat index f23ff75..5709032 100644 --- a/patterns/ani.hexpat +++ b/patterns/ani.hexpat @@ -36,7 +36,12 @@ struct RiffChunk { u32 size; if (signature == "RIFF" || signature == "LIST") { char type[4]; - RiffChunk chunks[while($ - addressof(type) < size)]; + + // Compatible with error size defined in ani files + u32 remain = sizeof($) - addressof(type); + u32 marked = size > remain ? remain : size; + + RiffChunk chunks[while($ - addressof(type) < marked)]; } else if (signature[0] == 'I' && parent.type == "INFO") { char info[size]; } else if (signature == "anih") { diff --git a/tests/patterns/test_data/ani.compatibility.hexpat.ani b/tests/patterns/test_data/ani.compatibility.hexpat.ani new file mode 100644 index 0000000000000000000000000000000000000000..abc6ed82e73c7a9a82c00cbbf70d71c730758ec6 GIT binary patch literal 9188 zcmeI1O=x3P6vxj*5fQ8#(RL6fpc%$xv$3;iXNpjopq(;K+jTQkEOk<*QJKkRvg)#h zEV?YS5Rr7%O=%aAFhWCI%qpwWMQvo<#tJ3I+UxJUujHlgMMedQRRFn(t_`!GH`zmlELiOgpgKYI_q+RNB0n47eI340BD30s-} zVquV6+k-5(a6hhoP1-N! zqEQ{4snTejk1pUPmuM7oqde8R#^0lJOhx zRroFVb@&|o9Q+J?3VsxR7(M|%1kbqJ+wg1fOYoEMiICk9F%9@C{1*H=d=7ptA!df% zOtG7z?B+1LnP4}E;G6Kr@OAio_+9uCd z+^!97SB~2?JuT9NKZdWv@5ArHm*7LbKGJ}%!f(N^!{^}V;6uJXj9Zs&_%-+?_(}K# zeAounO#{9PzXiVz&rX{;78blgb<>1DhOfi#!|%egIUyTVH+-M5HEao+#1dH82A!Oo z$g^k9q(mfL-S@@YHP z2PmK74+n6oKNP@ar|=kKq4AZixE#M-=^mzR&+7Ou#87rxJikB4a;)7hTglF-b_42e zm)mXDcS;GTUb;3ahJz_cr}hf9-W?u*9lx9T-JEc)qZ{*$U_0ztyMyb7Bz*tC>=knL zb?H=e6}q@EKSAOTck3$px&iw2)<{CmYAT(OO|^9R40 zvj@MJ)`KR$jPmG6gAG5u?YqBV%k8 zqc#8TJ2J)=D^A5nxE}52NE)ACtdO1fdj@yF7gMG9cj;oyRTH6kn35U!*_@9w%-P6~ zrp14VECoZZb!|8JJ=GJUV06w%#Y8G5QZbQ=iJrw={B8cHT7u6)9MumvV0LR}eVr-qFDnM1t1rg)Q7)Qli6fqqcW2u;nBE|xAepNR?BF1yM zkhkStfpxpdYx5OUO8x(yrTCWkH!7j(rP~ptWD0K>Ggvj}gWsDoxnwCB&9$!WM*aF6 zrjLTrDIygUshCK`L@FjyF`XapTBjIPstCB+I zw&Yp&zIh$Jg1&JI?X8r1pS&Kug}%LeVXNLPR($0k<)W%Y-w0u6t=~+m)iTXi%X*ts U5xH`tZ