Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d4b731e271 | |||
| 927e59b74a | |||
| cbe65ccfa0 | |||
| 63637e457c | |||
| ed2572b9c8 | |||
| cf8e004a51 | |||
| a1a14982ec | |||
| 29ef35abff | |||
| 1fd78b9b34 |
@@ -1,6 +1,14 @@
|
||||
Entries are sorted chronologically from oldest to youngest within each release,
|
||||
releases are sorted from youngest to oldest.
|
||||
|
||||
version 3.2.4:
|
||||
- avcodec/h264_slice: Clear ref_counts on redundant slices
|
||||
- lavf/mov.c: Avoid heap allocation wrap in mov_read_uuid
|
||||
- lavf/mov.c: Avoid heap allocation wrap in mov_read_hdlr
|
||||
- avcodec/pictordec: Fix logic error
|
||||
- ffserver_config: Setup codecpar in add_codec()
|
||||
- Changelog: fix typos
|
||||
|
||||
version 3.2.3:
|
||||
- avcodec/movtextdec: Fix decode_styl() cleanup
|
||||
- lavf/matroskadec: fix is_keyframe for early Blocks
|
||||
@@ -22,9 +30,9 @@ version 3.2.3:
|
||||
- avformat/avidec: skip odml master index chunks in avi_sync
|
||||
- avcodec/mjpegdec: Check for rgb before flipping
|
||||
- lavf/utils.c Protect against accessing entries[nb_entries]
|
||||
- avutil/random_seed: Reduce the time needed on systems with very low precission clock()
|
||||
- avutil/random_seed: Reduce the time needed on systems with very low precision clock()
|
||||
- swscale/swscale: Fix dereference of stride array before null check
|
||||
- avutil/random_seed: Improve get_generic_seed() with higher precission clock()
|
||||
- avutil/random_seed: Improve get_generic_seed() with higher precision clock()
|
||||
- avformat/mp3dec: fix msan warning when verifying mpa header
|
||||
- avformat/utils: Print verbose error message if stream count exceeds max_streams
|
||||
- avformat/options_table: Set the default maximum number of streams to 1000
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ PROJECT_NAME = FFmpeg
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 3.2.3
|
||||
PROJECT_NUMBER = 3.2.4
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
@@ -323,6 +323,8 @@ done:
|
||||
av_dict_free(&recommended);
|
||||
av_stream_set_recommended_encoder_configuration(st, enc_config);
|
||||
st->codec = av;
|
||||
st->codecpar = avcodec_parameters_alloc();
|
||||
avcodec_parameters_from_context(st->codecpar, av);
|
||||
stream->streams[stream->nb_streams++] = st;
|
||||
}
|
||||
|
||||
|
||||
@@ -1771,8 +1771,10 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl,
|
||||
return ret;
|
||||
|
||||
// discard redundant pictures
|
||||
if (sl->redundant_pic_count > 0)
|
||||
if (sl->redundant_pic_count > 0) {
|
||||
sl->ref_count[0] = sl->ref_count[1] = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (sl->first_mb_addr == 0 || !h->current_slice) {
|
||||
if (h->setup_finished) {
|
||||
|
||||
@@ -142,7 +142,7 @@ static int decode_frame(AVCodecContext *avctx,
|
||||
|
||||
if (av_image_check_size(s->width, s->height, 0, avctx) < 0)
|
||||
return -1;
|
||||
if (s->width != avctx->width && s->height != avctx->height) {
|
||||
if (s->width != avctx->width || s->height != avctx->height) {
|
||||
ret = ff_set_dimensions(avctx, s->width, s->height);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
+12
-5
@@ -404,11 +404,11 @@ retry:
|
||||
return ret;
|
||||
} else if (!key && c->found_hdlr_mdta && c->meta_keys) {
|
||||
uint32_t index = AV_RB32(&atom.type);
|
||||
if (index < c->meta_keys_count) {
|
||||
if (index < c->meta_keys_count && index > 0) {
|
||||
key = c->meta_keys[index];
|
||||
} else {
|
||||
av_log(c->fc, AV_LOG_WARNING,
|
||||
"The index of 'data' is out of range: %d >= %d.\n",
|
||||
"The index of 'data' is out of range: %d < 1 or >= %d.\n",
|
||||
index, c->meta_keys_count);
|
||||
}
|
||||
}
|
||||
@@ -739,6 +739,8 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
|
||||
title_size = atom.size - 24;
|
||||
if (title_size > 0) {
|
||||
if (title_size > FFMIN(INT_MAX, SIZE_MAX-1))
|
||||
return AVERROR_INVALIDDATA;
|
||||
title_str = av_malloc(title_size + 1); /* Add null terminator */
|
||||
if (!title_str)
|
||||
return AVERROR(ENOMEM);
|
||||
@@ -4434,7 +4436,7 @@ static int mov_read_uuid(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
0x9c, 0x71, 0x99, 0x94, 0x91, 0xe3, 0xaf, 0xac
|
||||
};
|
||||
|
||||
if (atom.size < sizeof(uuid) || atom.size == INT64_MAX)
|
||||
if (atom.size < sizeof(uuid) || atom.size >= FFMIN(INT_MAX, SIZE_MAX))
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
ret = avio_read(pb, uuid, sizeof(uuid));
|
||||
@@ -4597,8 +4599,8 @@ static int mov_read_senc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
|
||||
avio_rb32(pb); /* entries */
|
||||
|
||||
if (atom.size < 8) {
|
||||
av_log(c->fc, AV_LOG_ERROR, "senc atom size %"PRId64" too small\n", atom.size);
|
||||
if (atom.size < 8 || atom.size > FFMIN(INT_MAX, SIZE_MAX)) {
|
||||
av_log(c->fc, AV_LOG_ERROR, "senc atom size %"PRId64" invalid\n", atom.size);
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
@@ -4666,6 +4668,11 @@ static int mov_read_saiz(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (atom.size > FFMIN(INT_MAX, SIZE_MAX)) {
|
||||
av_log(c->fc, AV_LOG_ERROR, "saiz atom auxiliary_info_sizes size %"PRId64" invalid\n", atom.size);
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
/* save the auxiliary info sizes as is */
|
||||
data_size = atom.size - atom_header_size;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user