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:
+8
-2
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user