[PATCH v2 1/1] input: avoid NULL dereference
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Tue Oct 3 02:56:09 CEST 2023
On 10/3/23 01:40, Tom Rini wrote:
> On Tue, Oct 03, 2023 at 01:37:14AM +0200, Rasmus Villemoes wrote:
>> On 03/10/2023 00.46, Tom Rini wrote:
>>> On Tue, Oct 03, 2023 at 12:27:25AM +0200, Heinrich Schuchardt wrote:
>>>>
>>>> error = stdio_register(dev);
>>>> -#if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(ENV_SUPPORT)
>>>> - /* check if this is the standard input device */
>>>> - if (!error && strcmp(env_get("stdin"), dev->name) == 0) {
>>>> - /* reassign the console */
>>>> - if (OVERWRITE_CONSOLE ||
>>>> - console_assign(stdin, dev->name))
>>>> - return -1;
>>>> + if ((IS_ENABLED(SPL_BUILD) || CONFIG_IS_ENABLED(ENV_SUPPORT)) &&
>>>> + !error) {
>>>> + const char *cstdin;
>>>> +
>>>> + /* check if this is the standard input device */
>>>> + cstdin = env_get("stdin");
>>>> + if (cstdin && !strcmp(cstdin, dev->name)) {
>>>> + /* reassign the console */
>>>> + if (OVERWRITE_CONSOLE ||
>>>> + console_assign(stdin, dev->name))
>>>> + return -1;
>>>> + }
>>>> }
>>>> -#else
>>>> - error = error;
>>>> -#endif
>>>>
>>>> return 0;
>>>> }
>>>
>>> This is an example I think of where #if is more readable.
>>>
>>
>> I kind of agree, but at the same time, this could just be rewritten to
>> avoid that extra indentation. Turn the condition around and make it an
>> early return, then the rest of the function need not be indented.
>
> Yes, both the indentation and having to use "CONFIG_SPL_BUILD" to start
> with (which is a special case!).
The configuration check looks incorrect:
Function get_env() only exists if CONFIG_$(SPL_TPL)_ENV_SUPPORT=y.
There is no good reason to check for CONFIG_SPL_BUILD.
Why do we have symbols CONFIG_SPL_INPUT and CONFIG_TPL_INPUT if there is
no board using these?
Best regards
Heinrich
>
>> I also think the conversion above is buggy (loses a ! on the SPL part),
>> but also, the condition is needlessly convoluted to begin with.
>> !defined(CONFIG_SPL_BUILD) implies ENV_SUPPORT, so the condition is
>> equivalent to just CONFIG_IS_ENABLED(ENV_SUPPORT). So I'd add a
>>
>> if (!CONFIG_IS_ENABLED(ENV_SUPPORT)
>> return 0;
>
> Changes like that would make things overall better, agreed.
>
More information about the U-Boot
mailing list