[PATCH 4/4] rtems-debugger-target.c: Fix Coverity Dereference before null check
Chris Johns
chrisj at rtems.org
Thu Feb 11 21:23:12 UTC 2021
On 12/2/21 8:03 am, Joel Sherrill wrote:
> On Thu, Feb 11, 2021, 3:00 PM Chris Johns <chrisj at rtems.org
> <mailto:chrisj at rtems.org>> wrote:
>
> On 12/2/21 7:27 am, Ryan Long wrote:
> > Fixes CID #1468682 where target is dereferenced before it has been
> > checked as to whether it is null or not in the
> > rtems_debugger_target_swbreak_control function.
> > ---
> > cpukit/libdebugger/rtems-debugger-target.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/cpukit/libdebugger/rtems-debugger-target.c
> b/cpukit/libdebugger/rtems-debugger-target.c
> > index e495170..3726a6c 100644
> > --- a/cpukit/libdebugger/rtems-debugger-target.c
> > +++ b/cpukit/libdebugger/rtems-debugger-target.c
> > @@ -171,17 +171,18 @@ int
> > rtems_debugger_target_swbreak_control(bool insert, DB_UINT addr, DB_UINT
> kind)
> > {
> > rtems_debugger_target* target = rtems_debugger->target;
> > - rtems_debugger_target_swbreak* swbreaks = target->swbreaks.block;
rtems_debugger_target_swbreak* swbreaks;
> > size_t swbreak_size;
> > uint8_t* loc = (void*) addr;
> > size_t i;
> > int r;
> >
> > - if (target == NULL || swbreaks == NULL || kind !=
> target->breakpoint_size) {
> > + if (target == NULL || target->swbreaks.block == NULL ||
> > + kind != target->breakpoint_size) {
> > errno = EIO;
> > return -1;
> > }
> >
> > + rtems_debugger_target_swbreak* swbreaks = target->swbreaks.block;
swbreaks = target->swbreaks.block;
>
> The debug server does not declare local vars in the body of functions. I would
> prefer the this code base stays that way if that is OK?
>
>
> Then how do you want to address the issue identified by Coverity
>
As above. Like us old timers always did with C :) :).
As someone who likes and uses C++ I prefer C to clearly have the local vars at
the start of the block.
Chris
More information about the devel
mailing list