[FFmpeg-devel] [PATCH] libavcodec/h264dec: avoid arithmetic on null pointers
James Almer
jamrial at gmail.com
Wed Mar 1 21:07:10 EET 2023
On 3/1/2023 3:50 PM, Jeremy Dorfman wrote:
> null pointer arithmetic is undefined behavior in C.
> ---
> libavcodec/h264dec.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
> index 2d691731c5..ef698f2630 100644
> --- a/libavcodec/h264dec.c
> +++ b/libavcodec/h264dec.c
> @@ -912,8 +912,8 @@ static int finalize_frame(H264Context *h, AVFrame *dst, H264Picture *out, int *g
> av_log(h->avctx, AV_LOG_DEBUG, "Duplicating field %d to fill missing\n", field);
>
> for (p = 0; p<4; p++) {
> - dst_data[p] = f->data[p] + (field^1)*f->linesize[p];
> - src_data[p] = f->data[p] + field *f->linesize[p];
> + dst_data[p] = f->data[p] ? f->data[p] + (field^1)*f->linesize[p] : NULL;
> + src_data[p] = f->data[p] ? f->data[p] + field *f->linesize[p] : NULL;
> linesizes[p] = 2*f->linesize[p];
> }
Probably cleaner and clearer to do it like this:
dst_data[p] = FF_PTR_ADD(f->data[p], (field^1)*f->linesize[p]);
src_data[p] = FF_PTR_ADD(f->data[p], field *f->linesize[p]);
More information about the ffmpeg-devel
mailing list