[PATCH 1/2] objectextendinformation.c: Fix Dereference after null check (CID #26033)
Joel Sherrill
joel at rtems.org
Mon Mar 15 20:27:18 UTC 2021
On Mon, Mar 15, 2021, 3:21 PM Gedare Bloom <gedare at rtems.org> wrote:
> On Fri, Mar 12, 2021 at 7:55 AM Ryan Long <ryan.long at 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.
>
>
> > + /*
> > * 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 at rtems.org
> > http://lists.rtems.org/mailman/listinfo/devel
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20210315/887ba96a/attachment-0001.html>
More information about the devel
mailing list