[FFmpeg-cvslog] avcodec/ffv1dec: don't add offsets to more NULL pointers
James Almer
git at videolan.org
Tue Jul 22 15:52:30 EEST 2025
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Fri Jul 18 21:42:35 2025 -0300| [48ef4caac2d49cab8ed4decc33e86cd879dc8736] | committer: James Almer
avcodec/ffv1dec: don't add offsets to more NULL pointers
Fixes: libavcodec/ffv1dec.c:453:43: runtime error: applying zero offset to null pointer
Signed-off-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=48ef4caac2d49cab8ed4decc33e86cd879dc8736
---
libavcodec/ffv1dec.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c
index d709e8ccbb..312b1163fc 100644
--- a/libavcodec/ffv1dec.c
+++ b/libavcodec/ffv1dec.c
@@ -447,16 +447,20 @@ static int decode_slice(AVCodecContext *c, void *arg)
decode_plane(f, sc, &gb, p->data[0] + ps*x + y*p->linesize[0] , width, height, p->linesize[0], 0, 0, 2, ac);
decode_plane(f, sc, &gb, p->data[0] + ps*x + y*p->linesize[0] + (ps>>1), width, height, p->linesize[0], 1, 1, 2, ac);
} else if (f->use32bit) {
- uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0],
- p->data[1] + ps * x + y * p->linesize[1],
- p->data[2] + ps * x + y * p->linesize[2] };
+ uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0] };
+ if (f->chroma_planes) {
+ planes[1] = p->data[1] + ps * x + y * p->linesize[1];
+ planes[2] = p->data[2] + ps * x + y * p->linesize[2];
+ }
if (f->transparency)
planes[3] = p->data[3] + ps * x + y * p->linesize[3];
decode_rgb_frame32(f, sc, &gb, planes, width, height, p->linesize);
} else {
- uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0],
- p->data[1] + ps * x + y * p->linesize[1],
- p->data[2] + ps * x + y * p->linesize[2] };
+ uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0] };
+ if (f->chroma_planes) {
+ planes[1] = p->data[1] + ps * x + y * p->linesize[1];
+ planes[2] = p->data[2] + ps * x + y * p->linesize[2];
+ }
if (f->transparency)
planes[3] = p->data[3] + ps * x + y * p->linesize[3];
decode_rgb_frame(f, sc, &gb, planes, width, height, p->linesize);
More information about the ffmpeg-cvslog
mailing list