This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Small segfault fix when there is no python


Thanks Doug and Sergio!

   Daniel.


On Thu, Mar 20, 2014 at 2:52 PM, Doug Evans <dje@google.com> wrote:
> On Thu, Mar 20, 2014 at 10:31 AM, Sergio Durigan Junior
> <sergiodj@redhat.com> wrote:
>> On Thursday, March 20 2014, Daniel Gutson wrote:
>>
>>> Hi,
>>>
>>>    the small attached patch prevents gdb to segfault when an extension
>>> language definition has no ops,
>>> which e.g. occurs when HAVE_PYTHON is not defined so
>>> extension_language_python remains with ops in NULL.
>>> This causes the line
>>>    if (extlang->ops->eval_from_control_command != NULL)
>>> (in eval_ext_lang_from_control_command) to dereference a null pointer.
>>
>> Hi Daniel,
>>
>> Thanks for the patch.  This is a simple patch so it doesn't need a
>> copyright assignment from you.  However, if you intend to continue
>> contributing to GDB, please e-mail me offlist and I can send you the
>> papers to obtain the assignment.
>>
>> Just a few comments about formatting issues.
>>
>>>     2014-03-20    Daniel Gutson (daniel.gutson@tallertechnologies.com)
>>>
>>> gdb/
>>>     * extension.c: (eval_ext_lang_from_control_command) Added check to
>>> prevent dereference of null pointer.
>>
>> The ChangeLog format is wrong.  Take a look at the ChangeLog file for
>> lots of examples, but basically you need to write:
>>
>> 2014-03-20  Your Name  <your@email>
>>
>>         * file.c (function): Added check to prevent blabla...
>>
>> Pay attention to the 2 spaces between the date, the name and the e-mail,
>> and also to the TAB character indenting the description.
>>
>>> diff --git a/gdb/extension.c b/gdb/extension.c
>>> index c2f502b..8357ee8 100644
>>> --- a/gdb/extension.c
>>> +++ b/gdb/extension.c
>>> @@ -342,11 +342,14 @@ eval_ext_lang_from_control_command (struct command_line *cmd)
>>>      {
>>>        if (extlang->cli_control_type == cmd->control_type)
>>>       {
>>> -       if (extlang->ops->eval_from_control_command != NULL)
>>> -         {
>>> -           extlang->ops->eval_from_control_command (extlang, cmd);
>>> -           return;
>>> -         }
>>> +      if (extlang->ops != NULL)
>>> +        {
>>> +         if (extlang->ops->eval_from_control_command != NULL)
>>> +           {
>>> +             extlang->ops->eval_from_control_command (extlang, cmd);
>>> +             return;
>>> +           }
>>> +        }
>>
>> You could simplify this by writing:
>>
>>   if (extlang->ops != NULL && extlang->ops->eval_from_control_command != NULL)
>>
>> If you don't want to join the two "if"s, then you don't need to put the
>> braces on the outter "if", because it has one single statement.
>>
>> The patch looks good to me, but I'm not a maintainer and can't approve
>> it.
>>
>> Thanks,
>>
>> --
>> Sergio
>
>
> I did an audit of all the uses of ->ops and think this is the only one I missed.
> I will commit with the needed changes.
> Thanks for the patch!



-- 

Daniel F. Gutson
Chief Engineering Officer, SPD


San Lorenzo 47, 3rd Floor, Office 5

Córdoba, Argentina


Phone: +54 351 4217888 / +54 351 4218211

Skype: dgutson


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]