Am Freitag, den 11.04.2014, 10:43 -0300 schrieb Richard:
> Em 11-04-2014 06:49, Fuchs, Andreas escreveu:
> > Disclaimer:
> > I could not complie-test or runtime-test these patches right now. This is a 
> > pure code-only review of the patches.
> >
> > If toKill was actually NULL, you'd already die on line
> > 125:                previous->next = toKill->next;
> 
> Line 123 does a check on that one 'else if (previous && toKill) {'

guess I missed that one.

> 
> > If get_context() or get_previous_context() can actually return NULL, I'd 
> > add a return ERROR; right after those two functions.
> > Otherwise, I guess coverity is just not intelligent enough. Still, a 
> > NULL-check at the beginning right after the two getters is more logical 
> > (even if it's only for coverity).
> It doesn't return an error, because it's still tasked to unlock 
> 'tcs_ctx_lock', even if both returned contexts are NULL.
> Check line 127 for that.
> 
> The person who created this code didn't do that (IMO), because it did 
> want to separate the test in line 137, so it could be enclosed by the 
> ifdef in line 135. Code legibility suffered for that.

Actually, by doing the math, line 127 is almost the case of (toKill == previous 
== NULL)... Hard to see... :-/

So when reaching line 137, toKill could only be NULL, if previous == NULL and 
tcs_context_table->handle == handle
in which case it would we weird that get_context(handle) == NULL.
So, I guess no toKill == NULL in line 137, but the patch can be applied for 
coverity anyways, I guess...


By the way, can tcs_context_table == NULL ? That would be "ungood" in line 120.


> >
> > Am Mittwoch, den 09.04.2014, 15:41 -0300 schrieb [email protected]:
> >> From: Richard Maciel <[email protected]>
> >>
> >> Related to coverity CID 10304.
> >>
> >> There was a possible code execution path, in function context_destroy
> >> that have toKill pointer var with the NULL value.
> >>
> >> Signed-off-by: Richard Maciel <[email protected]>
> >> ---
> >>   src/tcs/tcs_context.c | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/src/tcs/tcs_context.c b/src/tcs/tcs_context.c
> >> index 905567b..2072bdc 100644
> >> --- a/src/tcs/tcs_context.c
> >> +++ b/src/tcs/tcs_context.c
> >> @@ -134,7 +134,7 @@ destroy_context(TCS_CONTEXT_HANDLE handle)
> >>   
> >>   #ifdef TSS_BUILD_TRANSP
> >>    /* Free existing transport session if necessary */
> >> -  if (toKill->transHandle)
> >> +  if (toKill != NULL && toKill->transHandle)
> >>            TCSP_FlushSpecific_Common(toKill->transHandle, TPM_RT_TRANS);
> >>   #endif
> >>   
> 

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
TrouSerS-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-tech

Reply via email to