[FFmpeg-devel] [PATCH] avcodec/av1_metadata: don't store the inserted TD OBU in stack

James Almer jamrial at gmail.com
Fri Apr 23 23:18:49 EEST 2021


On 4/23/2021 5:00 PM, Andreas Rheinhardt wrote:
> James Almer:
>> Fixes: stack-use-after-return
>> Fixes: clusterfuzz-testcase-minimized-ffmpeg_BSF_AV1_METADATA_fuzzer-5931515701755904
>> Fixes: clusterfuzz-testcase-minimized-ffmpeg_BSF_AV1_METADATA_fuzzer-6105676541722624
>>
>> Signed-off-by: James Almer <jamrial at gmail.com>
>> ---
>>   libavcodec/av1_metadata_bsf.c | 7 ++++---
>>   1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/libavcodec/av1_metadata_bsf.c b/libavcodec/av1_metadata_bsf.c
>> index 328db5c0da..b1ae364431 100644
>> --- a/libavcodec/av1_metadata_bsf.c
>> +++ b/libavcodec/av1_metadata_bsf.c
>> @@ -28,6 +28,7 @@ typedef struct AV1MetadataContext {
>>       CBSBSFContext common;
>>   
>>       int td;
>> +    AV1RawOBU td_obu;
>>   
>>       int color_primaries;
>>       int transfer_characteristics;
>> @@ -107,7 +108,7 @@ static int av1_metadata_update_fragment(AVBSFContext *bsf, AVPacket *pkt,
>>                                           CodedBitstreamFragment *frag)
>>   {
>>       AV1MetadataContext *ctx = bsf->priv_data;
>> -    AV1RawOBU td, *obu;
>> +    AV1RawOBU *obu;
>>       int err, i;
>>   
>>       for (i = 0; i < frag->nb_units; i++) {
>> @@ -124,12 +125,12 @@ static int av1_metadata_update_fragment(AVBSFContext *bsf, AVPacket *pkt,
>>           if (ctx->td == BSF_ELEMENT_REMOVE)
>>               ff_cbs_delete_unit(frag, 0);
>>       } else if (pkt && ctx->td == BSF_ELEMENT_INSERT) {
>> -        td = (AV1RawOBU) {
>> +        ctx->td_obu = (AV1RawOBU) {
>>               .header.obu_type = AV1_OBU_TEMPORAL_DELIMITER,
>>           };
> 
> I think you can move the initialization to init. LGTM anyway.

Will do that and apply. Thanks

> 
>>   
>>           err = ff_cbs_insert_unit_content(frag, 0, AV1_OBU_TEMPORAL_DELIMITER,
>> -                                         &td, NULL);
>> +                                         &ctx->td_obu, NULL);
>>           if (err < 0) {
>>               av_log(bsf, AV_LOG_ERROR, "Failed to insert Temporal Delimiter.\n");
>>               return err;
>>
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> 



More information about the ffmpeg-devel mailing list