[FFmpeg-devel] [PATCH] Adding support for OSX bundles to ffmpeg command line

Måns Rullgård mans
Fri Mar 20 23:25:05 CET 2009


Chris Marrin <chris at marrin.com> writes:

> On Mar 20, 2009, at 2:37 PM, M?ns Rullg?rd wrote:
>
>> Chris Marrin <chris at marrin.com> writes:
>>
>>> On Mar 20, 2009, at 9:50 AM, M?ns Rullg?rd wrote:
>>>
>>>> Chris Marrin <chris at marrin.com> writes:
>>>>
>>>>> @@ -3915,7 +3930,16 @@
>>>>> {
>>>>>    int i;
>>>>>    int64_t ti;
>>>>> -
>>>>> +
>>>>> +    // get the executable path
>>>>> +    char* p = strrchr(argv[0], '/');
>>>>> +    if (p) {
>>>>> +        int length = p-argv[0];
>>>>> +        executable_path = av_malloc(length+1);
>>>>> +        strncpy(executable_path, argv[0], length);
>>>>> +        executable_path[length] = '\0';
>>>>> +    }
>>>>> +
>>>>
>>>> There are a million ways in which this can fail.
>>>
>>> I can find a few:
>>>
>>> 1) executable_path is not set to null if the if test fails (along  
>>> with
>>> the corresponding check for null where used).
>>> 2) The malloc can fail.
>>> 3) In the unimaginably unlikely case that argv[0] contained a string
>>> of greater than 2GB with a slash at the end, the length would wrap
>>> 4) The executable_path is leaked (not a failure, but I can fix it)
>>>
>>> I can fix all those. Others?
>>
>> 5) argv[0] doesn't contain the (expected) path to the executable.
>> There are a number of ways this can realistically happen.
>
> The outcome of which is that a) the string looks nothing like a path  
> and executable_path is empty or b) the string looks something like a  
> path and executable_path contains nonsense. In either case you would  
> not find the preset and fallback to existing behavior. I suppose  
> argv[0] could even be null, so a check for that is needed?
>
> Any more dangers?

It could point to a location containing presets, but the wrong ones.
It could use something other than / as directory separator.

Using argv[0] is generally wrong, period.

-- 
M?ns Rullg?rd
mans at mansr.com




More information about the ffmpeg-devel mailing list