[OE-core] [PATCH 1/2] base-files: profile: Do not assume that the 'command' command exists

ChenQi Qi.Chen at windriver.com
Fri Oct 13 09:53:55 UTC 2017


On 09/18/2017 09:56 PM, Mike Looijmans wrote:
> On 18-09-17 15:24, Mike Looijmans wrote:
>> On 18-09-17 15:08, Burton, Ross wrote:
>>> On 18 September 2017 at 12:31, Mike Looijmans 
>>> <mike.looijmans at topic.nl <mailto:mike.looijmans at topic.nl>> wrote:
>>>
>>>         This is basically the same change as I first sent a patch 
>>> for in
>>>         April, and
>>>         last pinged this Friday... The only real difference is that 
>>> this one
>>>         misses
>>>         passing error output from resize to /dev/null (which it 
>>> should do to
>>>         handle
>>>         the case where tty exists, but resize does not).
>>>
>>>
>>>     Yeah, indeed.
>>>
>>>
>>> Apologies for missing that patch!
>>>
>>>     Other problem is that "resize" outputs shell script on stdout to be
>>>     executed, so the proper "total" invokation would be:
>>>
>>>        /dev/tty[A-z]*) eval `resize 2>/dev/null` ;;
>>>
>>>     The "eval" part is missing in your version...
>>>
>>>
>>> Who is going to submit the One True patch with all the fixes in?  I 
>>> promise to merge it.
>>
>> I'll send the one ring, eh, patch, in a few minutes. I'll merge the 
>> two into a single as well.
>
> On second thought, just use Peter's patch "as is".
>
> I've been experimenting with the "eval" part and it doesn't behave 
> well. Tends to confuse minicom, create garbage, and in particular when 
> run from "profile", it seems to result in counterproductive COLUMNS=0 
> and LINES=0.
>
> I'm actually wondering why the call to "resize" is being done at all. 
> Just calling "resize" has no effect, since it outputs the results on 
> stdout as shell script, and that is being discarded. Looking at the 
> commit that introduced it:
>

Looking at the codes in busybox (console-tools/resize.c), I can see that 
tcsetattr is actually called.
The output is due to:

     if (ENABLE_FEATURE_RESIZE_PRINT)
         printf("COLUMNS=%d;LINES=%d;export COLUMNS LINES;\n",
             w.ws_col, w.ws_row);

I can confirm that calling 'resize' is needed. Otherwise, you might get 
input wrapping on the same line when typing long commands.

I just tried busybox init based system and I also met '-sh: command: not 
found' error message.
I think Peter's patch ([OE-core] [PATCHv2 1/1] base-files: profile: 
Avoid using "command" to determine if programs exist) is correct.

Best Regards,
Chen Qi

> cc6360f4c4d9 (base-files: set dynamic COLUMNS via resize command)
>
> that already has no effect whatsoever. See the man page for resize:
> https://linux.die.net/man/1/resize
>
> I also would consider running some program's output as shell script a 
> bit spooky, it looks like a security hole waiting to be exploited.
>
>
>
> Kind regards,
>
> Mike Looijmans
> System Expert
>
> TOPIC Products
> Materiaalweg 4, NL-5681 RJ Best
> Postbus 440, NL-5680 AK Best
> Telefoon: +31 (0) 499 33 69 79
> E-mail: mike.looijmans at topicproducts.com
> Website: www.topicproducts.com
>
> Please consider the environment before printing this e-mail
>
>
>




More information about the Openembedded-core mailing list