[FFmpeg-devel] [PATCH 0/1] bug: test pointer to be used.

James Almer jamrial at gmail.com
Mon Jan 4 23:12:10 EET 2021


On 1/4/2021 3:11 PM, AlexisWilke wrote:
> It looks like the if() and the following lines disagree on the pointer to
> be used.
> 
> I would imagine that these have been tested so the:
> 
>      f = indev_list[i - size];
> 
> and
> 
>      f = outdev_list[i - size];
> 
> are most certainly right, meaning that what's is wrong would be the condition
> on the line prior. There is another location in that same file where a
> similar test is used and the if() & following access use the same
> pointer.
> 
> A proper test should call avpriv_register_devices() four times: with both
> pointers set to NULL, both pointers not set to NULL, and twice with one of
> the pointers set to NULL. That would allow you to verify this fix properly.

avpriv_register_devices() is an internal function that's called only 
once by avdevice_register_all(), and it will set both pointers to an 
array containing zero or more devices. Nothing else is meant to call it 
at all.
So indev_list and outdev_list will either both be NULL, or point to 
separate device list arrays.

This means there's no chance for a crash, but i agree that to make this 
more robust, the list checked should be the one that's used afterwards, 
in case the above were to be changed.

> 
> 
> AlexisWilke (1):
>    bug: test pointer to be used.
> 
>   libavformat/allformats.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 



More information about the ffmpeg-devel mailing list