[PATCH] Make sure GDB uses a valid shell when starting the inferior and to perform the "shell" command

Sergio Durigan Junior sergiodj@redhat.com
Fri Jul 24 19:10:00 GMT 2015


On Friday, July 24 2015, Simon Marchi wrote:

> On 15-07-24 02:19 PM, Sergio Durigan Junior wrote:
>> It is known that GDB needs a valid shell to start the inferior and to
>> offer the "shell" command to the user.  This has recently been the
>> cause of a problem on the MIPS buildslave, because $SHELL was set to
>> /sbin/nologin and several tests were failing.  The thread is here:
>> 
>>   <https://sourceware.org/ml/gdb-patches/2015-07/msg00535.html>
>> 
>> However, I think we can do better than that.  If 'startup-with-shell'
>> is on, which is the default, we blindly trust that the user will
>> provide a valid shell for us, and this may not be true all the time.
>> So I am proposing a patch to increment the tests made by GDB before
>> running the inferior to decide whether it will use $SHELL or not.
>> Particularly, I created a new function, called "valid_shell", which
>> defines the concept of a valid shell for GDB:
>> 
>>   - A file that exists and is executable by the user
>> 
>>   - A file that is not /sbin/nologin
>
> Note that on my Ubuntu 14.04:
>
> $ which nologin
> /usr/sbin/nologin

/sbin/nologin is probably a symlink to this file, isn't it?  But yeah,
the check could include /usr/sbin/nologin as well.

> I think that /bin/false is also commonly specified as the default shell
> for system users (at least according to my /etc/passwd).

Indeed.  I will include /bin/false as well.

Thanks,

-- 
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF  31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/



More information about the Gdb-patches mailing list