[ros-dev] [ros-diffs] [dgorbachev] 39422: Fix bug #4129 in CmpGetNameControlBlock().

Alex Ionescu ionucu at videotron.ca
Sun Feb 8 18:31:47 CET 2009


By reformatting my code and breaking ReactOS 1) Coding Style and 2)  
Commit Rules?

On 5-Feb-09, at 4:30 PM, dgorbachev at svn.reactos.org wrote:

> Author: dgorbachev
> Date: Thu Feb  5 15:30:21 2009
> New Revision: 39422
>
> URL: http://svn.reactos.org/svn/reactos?rev=39422&view=rev
> Log:
> Fix bug #4129 in CmpGetNameControlBlock().
>
> Modified:
>  trunk/reactos/ntoskrnl/config/cmkcbncb.c
>
> Modified: trunk/reactos/ntoskrnl/config/cmkcbncb.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/config/cmkcbncb.c?rev=39422&r1=39421&r2=39422&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- trunk/reactos/ntoskrnl/config/cmkcbncb.c [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/config/cmkcbncb.c [iso-8859-1] Thu Feb  5  
> 15:30:21 2009
> @@ -175,15 +175,16 @@
>   Length = NodeName->Length / sizeof(WCHAR);
>   for (i = 0; i < (NodeName->Length / sizeof(WCHAR)); i++)
>   {
> -        /* Check if this is a valid character */
> -        if (*NodeName->Buffer > (UCHAR)-1)
> +        /* Check if this is a 16-bit character */
> +        if (NodeName->Buffer[i] > (UCHAR)-1)
>       {
>           /* This is the actual size, and we know we're not  
> compressed */
>           Length = NodeName->Length;
>           IsCompressed = FALSE;
> -        }
> -    }
> -
> +            break;
> +        }
> +    }
> +
>   /* Lock the NCB entry */
>   CmpAcquireNcbLockExclusiveByKey(ConvKey);
>
> @@ -195,7 +196,7 @@
>       Ncb = CONTAINING_RECORD(HashEntry, CM_NAME_CONTROL_BLOCK,  
> NameHash);
>
>       /* Check if the hash matches */
> -        if ((ConvKey = HashEntry->ConvKey) && (Length = Ncb- 
> >NameLength))
> +        if (ConvKey == HashEntry->ConvKey && Length == Ncb- 
> >NameLength)
>       {
>           /* Assume success */
>           Found = TRUE;
> @@ -242,7 +243,7 @@
>       /* Go to the next hash */
>       HashEntry = HashEntry->NextHash;
>   }
> -
> +
>   /* Check if we didn't find it */
>   if (!Found)
>   {
> @@ -255,16 +256,15 @@
>           CmpReleaseNcbLockByKey(ConvKey);
>           return NULL;
>       }
> -
> +
>       /* Clear it out */
>       RtlZeroMemory(Ncb, NcbSize);
> -
> +
>       /* Check if the name was compressed */
>       if (IsCompressed)
>       {
>           /* Copy the compressed name */
> -            Ncb->Compressed = TRUE;
> -            for (i = 0; i < Length; i++)
> +            for (i = 0; i < NodeName->Length / sizeof(WCHAR); i++)
>           {
>               /* Copy Unicode to ANSI */
>               ((PCHAR)Ncb->Name)[i] =  
> (CHAR)RtlUpcaseUnicodeChar(NodeName->Buffer[i]);
> @@ -273,25 +273,25 @@
>       else
>       {
>           /* Copy the name directly */
> -            Ncb->Compressed = FALSE;
> -            for (i = 0; i < Length; i++)
> +            for (i = 0; i < NodeName->Length / sizeof(WCHAR); i++)
>           {
>               /* Copy each unicode character */
>               Ncb->Name[i] = RtlUpcaseUnicodeChar(NodeName- 
> >Buffer[i]);
>           }
>       }
> -
> +
>       /* Setup the rest of the NCB */
> +        Ncb->Compressed = IsCompressed;
>       Ncb->ConvKey = ConvKey;
>       Ncb->RefCount++;
>       Ncb->NameLength = Length;
> -
> +
>       /* Insert the name in the hash table */
>       HashEntry = &Ncb->NameHash;
>       HashEntry->NextHash = GET_HASH_ENTRY(CmpNameCacheTable,  
> ConvKey).Entry;
>       GET_HASH_ENTRY(CmpNameCacheTable, ConvKey).Entry = HashEntry;
>   }
> -
> +
>   /* Release NCB lock */
>   CmpReleaseNcbLockByKey(ConvKey);
>
> @@ -537,18 +537,18 @@
>   }
>
>   /* Check if there's no linked cell */
> -	if (Kcb->KeyCell == HCELL_NIL)
> +    if (Kcb->KeyCell == HCELL_NIL)
>   {
>       /* Make sure it's a delete */
> -		ASSERT(Kcb->Delete);
> -		KeyNode = NULL;
> -	}
> +        ASSERT(Kcb->Delete);
> +        KeyNode = NULL;
> +    }
>   else
>   {
>       /* Get the key node */
> -	    KeyNode = (PCM_KEY_NODE)HvGetCell(Kcb->KeyHive, Kcb->KeyCell);
> -	}
> -
> +        KeyNode = (PCM_KEY_NODE)HvGetCell(Kcb->KeyHive, Kcb- 
> >KeyCell);
> +    }
> +
>   /* Check if we got the node */
>   if (!KeyNode)
>   {
> @@ -561,7 +561,7 @@
>       Kcb->ExtFlags &= ~CM_KCB_INVALID_CACHED_INFO;
>       Kcb->SubKeyCount = KeyNode->SubKeyCounts[Stable] +
>                          KeyNode->SubKeyCounts[Volatile];
> -
> +
>       /* Release the cell */
>       HvReleaseCell(Kcb->KeyHive, Kcb->KeyCell);
>   }
> @@ -865,12 +865,12 @@
>   }
>
>   /* Check if this is a KCB inside a frozen hive */
> -	if ((Kcb) && (((PCMHIVE)Hive)->Frozen) && (!(Kcb->Flags &  
> KEY_SYM_LINK)))
> +    if ((Kcb) && (((PCMHIVE)Hive)->Frozen) && (!(Kcb->Flags &  
> KEY_SYM_LINK)))
>   {
>       /* Don't add these to the delay close */
> -		Kcb->ExtFlags |= CM_KCB_NO_DELAY_CLOSE;
> -    }
> -
> +        Kcb->ExtFlags |= CM_KCB_NO_DELAY_CLOSE;
> +    }
> +
>   /* Sanity check */
>   ASSERT((!Kcb) || (Kcb->Delete == FALSE));
>
>

Best regards,
Alex Ionescu



More information about the Ros-dev mailing list