Hi !

It's an attempt to say to Coverity that the NotifyChange variable will NEVER be 
NULL after the allocation (as explained in the comment), because of the fact 
that the code uses POOL_RAISE_IF_ALLOCATION_FAILURE. Indeed, Coverity expected 
a "check against NULL and fail if it is" before the usage of the NotifyChange 
variable and therefore warned about its usage without checking against NULL, 
because it's dereferenced just after the allocation call. Coverity couldn't 
know what the usage of the POOL_RAISE_IF_ALLOCATION_FAILURE is for. In 
conclusion, the aim of the assert is to remove the Coverity warning without 
adding code-behaviour modification.

Hermès.


-----Message d'origine-----
De : [email protected] [mailto:[email protected]] De la 
part de Pierre Schweitzer
Envoyé : vendredi 28 septembre 2012 09:57
À : [email protected]
Objet : Re: [ros-dev] [ros-diffs] [hbelusca] 57400: [NTOSKRNL] Coverity code 
defects fixes : - Cache: CID 701441 - Config: CIDs 716570, 716669, 716760 - 
Dbgk: Kdbg: CIDs 716571, 515128/9, 500432 - Ex: CIDs 500156/7, 515122, 
716200/...

What's the purpose of such ASSERT?

> Modified: trunk/reactos/ntoskrnl/fsrtl/notify.c
> URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/fsrtl/notify.c?rev=57400&r1=57399&r2=57400&view=diff
>
==============================================================================
> --- trunk/reactos/ntoskrnl/fsrtl/notify.c [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/fsrtl/notify.c [iso-8859-1] Thu Sep 27
17:16:31 2012
> @@ -586,6 +586,13 @@
> /* Allocate new notification */
> NotifyChange = ExAllocatePoolWithTag(PagedPool |
POOL_RAISE_IF_ALLOCATION_FAILURE,
> sizeof(NOTIFY_CHANGE), 'FSrN');
> +
> + /*
> + * If NotifyChange == NULL then an
> + * exception was already raised.
> + */
> + ASSERT(NotifyChange != NULL);
> +
> RtlZeroMemory(NotifyChange, sizeof(NOTIFY_CHANGE));
> 
> /* Set basic information */
> 

-- 
Pierre Schweitzer <[email protected]>
System Administrator
ReactOS Foundation

_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to