summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2020-02-15 14:52:47 +0100
committerPaul B Mahol <onemda@gmail.com>2020-02-16 13:04:01 +0100
commit96840e47de5199c258285d7b51f09d04ec0d1b72 (patch)
treef24353be32f413c8c02e94acb67a69d39cfd268e
parentdfb0b9370d3621ab1f603e7bb8e142b1f6996562 (diff)
avformat/utils: avoid unsigned integer overflows
-rw-r--r--libavformat/utils.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 7ff5ea9702..d5ad4ec4b0 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -4455,15 +4455,17 @@ void avformat_free_context(AVFormatContext *s)
if (s->oformat && s->oformat->priv_class && s->priv_data)
av_opt_free(s->priv_data);
- for (i = s->nb_streams - 1; i >= 0; i--)
- ff_free_stream(s, s->streams[i]);
-
+ for (i = 0; i < s->nb_streams; i++)
+ free_stream(&s->streams[i]);
+ s->nb_streams = 0;
- for (i = s->nb_programs - 1; i >= 0; i--) {
+ for (i = 0; i < s->nb_programs; i++) {
av_dict_free(&s->programs[i]->metadata);
av_freep(&s->programs[i]->stream_index);
av_freep(&s->programs[i]);
}
+ s->nb_programs = 0;
+
av_freep(&s->programs);
av_freep(&s->priv_data);
while (s->nb_chapters--) {