swscale/utils: initialize chroma when luma switched to cascade

When luma init switched to cascade the chroma init was skiped

Fixes: NULL pointer dereference
Fixes: #21583

Found-by: HAORAN FANG
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit dc9bf66796)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer
2026-03-03 18:10:28 +01:00
parent 187ed94440
commit d0d34fca71
+8 -2
View File
@@ -1730,13 +1730,15 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
PPC_ALTIVEC(cpu_flags) ? 8 :
have_neon(cpu_flags) ? 2 : 1;
if ((ret = initFilter(&c->vLumFilter, &c->vLumFilterPos, &c->vLumFilterSize,
ret = initFilter(&c->vLumFilter, &c->vLumFilterPos, &c->vLumFilterSize,
c->lumYInc, srcH, dstH, filterAlign, (1 << 12),
(flags & SWS_BICUBLIN) ? (flags | SWS_BICUBIC) : flags,
cpu_flags, srcFilter->lumV, dstFilter->lumV,
c->param,
get_local_pos(c, 0, 0, 1),
get_local_pos(c, 0, 0, 1))) < 0)
get_local_pos(c, 0, 0, 1));
int usecascade = (ret == RETCODE_USE_CASCADE);
if (ret < 0 && !usecascade)
goto fail;
if ((ret = initFilter(&c->vChrFilter, &c->vChrFilterPos, &c->vChrFilterSize,
c->chrYInc, c->chrSrcH, c->chrDstH,
@@ -1748,6 +1750,10 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
get_local_pos(c, c->chrDstVSubSample, c->dst_v_chr_pos, 1))) < 0)
goto fail;
if (usecascade) {
ret = RETCODE_USE_CASCADE;
goto fail;
}
#if HAVE_ALTIVEC
c->vYCoeffsBank = av_malloc_array(c->dstH, c->vLumFilterSize * sizeof(*c->vYCoeffsBank));