[PATCH 04/20] libchip/serial/ns16550* and z8530*: Assert on baud number to avoid divide by 0

Joel Sherrill joel.sherrill at oarcorp.com
Wed Nov 26 17:55:13 UTC 2014



On November 26, 2014 9:33:57 AM CST, Gedare Bloom <gedare at rtems.org> wrote:
>On Wed, Nov 26, 2014 at 2:36 AM, Chris Johns <chrisj at rtems.org> wrote:
>>
>> On 26/11/2014 10:02 am, Joel Sherrill wrote:
>>>
>>> From: Josh Oguin <josh.oguin at oarcorp.com>
>>>
>>> This was flagged by CodeSonar. It should be impossible to get an
>>> incorrect baud number back but ensure this in debug mode. The
>_Assert()
>>> keeps their scanner from evaluating for divide by 0 past this point.
>>> ---
>>>   c/src/libchip/serial/ns16550-context.c | 4 ++++
>>>   c/src/libchip/serial/ns16550.c         | 3 +++
>>>   c/src/libchip/serial/z85c30.c          | 8 +++++++-
>>>   3 files changed, 14 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/c/src/libchip/serial/ns16550-context.c
>>> b/c/src/libchip/serial/ns16550-context.c
>>> index 00ad89c..087627a 100644
>>> --- a/c/src/libchip/serial/ns16550-context.c
>>> +++ b/c/src/libchip/serial/ns16550-context.c
>>> @@ -592,9 +592,13 @@ static bool ns16550_set_attributes(
>>>
>>>     /*
>>>      *  Calculate the baud rate divisor
>>> +   *
>>> +   *  Assert ensures there is no division by 0.
>>>      */
>>>
>>>     baud_requested = rtems_termios_baud_to_number(t->c_cflag);
>>> +  _Assert( baud_requested != 0 );
>>> +
>>
>>
>> Should this return an error or the value should be tested in an upper
>layer.
>> I will raise a ticket to have the upper layers reject B0 as a baud
>rate.
>>
>Good point.

See the other thread. We have to support this in termios but not in drivers.

>> Chris
>>
>> _______________________________________________
>> devel mailing list
>> devel at rtems.org
>> http://lists.rtems.org/mailman/listinfo/devel
>_______________________________________________
>devel mailing list
>devel at rtems.org
>http://lists.rtems.org/mailman/listinfo/devel



More information about the devel mailing list