On Mon, Mar 15, 2021 at 2:27 PM Joel Sherrill <j...@rtems.org> wrote:
>
>
>
> On Mon, Mar 15, 2021, 3:21 PM Gedare Bloom <ged...@rtems.org> wrote:
>>
>> On Fri, Mar 12, 2021 at 7:55 AM Ryan Long <ryan.l...@oarcorp.com> wrote:
>> >
>> > CID 26033: Dereference after null check in _Objects_Extend_information().
>> >
>> > Closes #4326
>> > ---
>> >  cpukit/score/src/objectextendinformation.c | 11 +++++++++++
>> >  1 file changed, 11 insertions(+)
>> >
>> > diff --git a/cpukit/score/src/objectextendinformation.c 
>> > b/cpukit/score/src/objectextendinformation.c
>> > index 9796eb9..c669301 100644
>> > --- a/cpukit/score/src/objectextendinformation.c
>> > +++ b/cpukit/score/src/objectextendinformation.c
>> > @@ -171,6 +171,17 @@ Objects_Maximum _Objects_Extend_information(
>> >
>> >      if ( old_maximum > extend_count ) {
>> >        /*
>> > +       * Coverity thinks there is a way for this to be NULL (CID #26033).
>> > +       * After much time spent analyzing this, no one has identified the
>> > +       * conditions where this can actually occur. Adding this _Assert 
>> > ensures
>> > +       * that it is never NULL. If this assert is triggered, condition
>> > +       * generating this case will have been identified and it can be 
>> > revisted.
>> > +       * This is being done out of an abundance of caution since we could 
>> > have
>> > +       * easily flagged this as a false positive and ignored it 
>> > completely.
>> > +       */
>> > +      _Assert(information->object_blocks != NULL);
>> > +
>> That's interesting. It would help if you could share your analysis.
>
>
> This is the oldest Coverity issue that is open. It is over five years old. 
> Chris and I have tried multiple times to figure out if it is valid. We never 
> get any confidence that it cannot occur.
>
>>
>> How does
>> 70  if ( information->object_blocks == NULL ) {
>> be true, and if it is true, how does the exectuion flow proceed in
>> such a way that it will not reach this assert?
>
>
> No idea but it apparently doesn't based on our tests.
>
> Adding the assert is an attempt to finally find the case that trips this. It 
> is either something I can never occur or something we don't know how to make 
> happen. Either way the asserting like a good idea.
>
> if you have a test case in mind that can reproduce this coverity path, let's 
> try it and push this to failure. But we have no evidence that it's ever 
> occurred in the field.

Can information->object_blocks be NULL at line 70?

>>
>>
>>
>> > +      /*
>> >         *  Copy each section of the table over. This has to be performed as
>> >         *  separate parts as size of each block has changed.
>> >         */
>> > --
>> > 1.8.3.1
>> >
>> > _______________________________________________
>> > devel mailing list
>> > devel@rtems.org
>> > http://lists.rtems.org/mailman/listinfo/devel
>> _______________________________________________
>> devel mailing list
>> devel@rtems.org
>> http://lists.rtems.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to