[FFmpeg-devel] [PATCH V2] avutil/tx: add check against (*ctx)

John Cox jc at kynesim.co.uk
Thu May 16 13:54:59 EEST 2019


>Ruiling Song (12019-05-16):
>> ctx is a pointer to pointer here.
>> 
>> Signed-off-by: Ruiling Song <ruiling.song at intel.com>
>> ---
>>  libavutil/tx.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/libavutil/tx.c b/libavutil/tx.c
>> index 934ef27c81..1690604040 100644
>> --- a/libavutil/tx.c
>> +++ b/libavutil/tx.c
>> @@ -697,7 +697,7 @@ static int gen_mdct_exptab(AVTXContext *s, int len4, double scale)
>>  
>>  av_cold void av_tx_uninit(AVTXContext **ctx)
>>  {
>
>> -    if (!ctx)
>> +    if (!ctx || !(*ctx))
>
>That would protect somebody stupid enough to call av_tx_uninit(NULL)
>instead of av_tx_uninit(&var). A hard crass is completely warranted in
>this case. An assert would be acceptable.

Actually that is what the original code does.  What you appear to want
is

  if (!*ctx)

which protects against multi-free and is useful in that it can be called
unconditionally in cleanup code (assuming initial null assignments) and
crashes in what you describe as the "stupid" case.

>>          return;
>>  
>>      av_free((*ctx)->pfatab);
>
>Regards,

Regards

John Cox


More information about the ffmpeg-devel mailing list