diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index 16c4c3a283..3c00007907 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -1044,7 +1044,9 @@ static void handle_p_frame_png(PNGDecContext *s, AVFrame *p) int i, j; uint8_t *pd = p->data[0]; uint8_t *pd_last = s->last_picture.f->data[0]; - int ls = FFMIN(av_image_get_linesize(p->format, s->width, 0), s->width * s->bpp); + int ls = av_image_get_linesize(p->format, s->width, 0); + + ls = FFMIN(ls, s->width * s->bpp); ff_thread_await_progress(&s->last_picture, INT_MAX, 0); for (j = 0; j < s->height; j++) { diff --git a/libavformat/afc.c b/libavformat/afc.c index a99f65472d..102b74baeb 100644 --- a/libavformat/afc.c +++ b/libavformat/afc.c @@ -57,10 +57,10 @@ static int afc_read_header(AVFormatContext *s) static int afc_read_packet(AVFormatContext *s, AVPacket *pkt) { AFCDemuxContext *c = s->priv_data; - int64_t size; + int64_t size = c->data_end - avio_tell(s->pb); int ret; - size = FFMIN(c->data_end - avio_tell(s->pb), 18 * 128); + size = FFMIN(size, 18 * 128); if (size <= 0) return AVERROR_EOF; diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 39039f5bc9..2e261c94e6 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -362,7 +362,8 @@ static void avi_read_nikon(AVFormatContext *s, uint64_t end) uint16_t size = avio_rl16(s->pb); const char *name = NULL; char buffer[64] = { 0 }; - size = FFMIN(size, tag_end - avio_tell(s->pb)); + uint64_t remaining = tag_end - avio_tell(s->pb); + size = FFMIN(size, remaining); size -= avio_read(s->pb, buffer, FFMIN(size, sizeof(buffer) - 1)); switch (tag) {