diff options
author | James Almer <[email protected]> | 2025-07-13 19:56:13 -0300 |
---|---|---|
committer | James Almer <[email protected]> | 2025-07-15 10:24:09 -0300 |
commit | 9c55f22ef234046dfd47ae414f59e9e2c1530263 (patch) | |
tree | 8d7315eab0daebef51e443eb57feba128e8e4c14 | |
parent | 307983b292adb60c82e75c8e5e41deedc89efbf0 (diff) |
avcodec/ffv1dec: don't add offsets to NULL pointers
Fixes: libavcodec/ffv1dec.c:452:43: runtime error: applying zero offset to null pointer
Signed-off-by: James Almer <[email protected]>
-rw-r--r-- | libavcodec/ffv1dec.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c index 8d10d2cf8b..d613aa5395 100644 --- a/libavcodec/ffv1dec.c +++ b/libavcodec/ffv1dec.c @@ -444,14 +444,16 @@ static int decode_slice(AVCodecContext *c, void *arg) } 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], - p->data[3] + ps * x + y * p->linesize[3] }; + 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], - p->data[3] + ps * x + y * p->linesize[3] }; + 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); } if (ac != AC_GOLOMB_RICE && f->version > 2) { |