mirror of
https://github.com/reactos/reactos.git
synced 2025-04-18 03:34:11 +00:00
- Check for a valid process data pointer in some functions.
svn path=/trunk/; revision=4276
This commit is contained in:
parent
2a8c933a65
commit
718da6238e
1 changed files with 24 additions and 3 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $Id: handle.c,v 1.13 2003/03/05 22:50:24 ekohl Exp $
|
||||
/* $Id: handle.c,v 1.14 2003/03/09 21:41:00 hbirr Exp $
|
||||
*
|
||||
* reactos/subsys/csrss/api/handle.c
|
||||
*
|
||||
|
@ -15,15 +15,23 @@
|
|||
#include "api.h"
|
||||
#include <ntdll/rtl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
NTSTATUS STDCALL CsrGetObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Handle, Object_t **Object )
|
||||
{
|
||||
ULONG h = (((ULONG)Handle) >> 2) - 1;
|
||||
// DbgPrint( "CsrGetObject, Object: %x, %x, %x\n", Object, Handle, ProcessData->HandleTableSize );
|
||||
DPRINT("CsrGetObject, Object: %x, %x, %x\n", Object, Handle, ProcessData ? ProcessData->HandleTableSize : 0);
|
||||
|
||||
if (ProcessData == NULL)
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
if( h >= ProcessData->HandleTableSize )
|
||||
{
|
||||
DbgPrint( "CsrGetObject returning invalid handle\n" );
|
||||
DPRINT("CsrGetObject returning invalid handle\n");
|
||||
return STATUS_INVALID_HANDLE;
|
||||
}
|
||||
*Object = ProcessData->HandleTable[h];
|
||||
|
@ -37,6 +45,10 @@ NTSTATUS STDCALL CsrReleaseObject(PCSRSS_PROCESS_DATA ProcessData,
|
|||
{
|
||||
Object_t *Object;
|
||||
ULONG h = (((ULONG)Handle) >> 2) - 1;
|
||||
if (ProcessData == NULL)
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
if( h >= ProcessData->HandleTableSize || ProcessData->HandleTable[h] == 0 )
|
||||
return STATUS_INVALID_HANDLE;
|
||||
/* dec ref count */
|
||||
|
@ -59,6 +71,11 @@ NTSTATUS STDCALL CsrInsertObject( PCSRSS_PROCESS_DATA ProcessData, PHANDLE Handl
|
|||
ULONG i;
|
||||
PVOID* NewBlock;
|
||||
|
||||
if (ProcessData == NULL)
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
for (i = 0; i < ProcessData->HandleTableSize; i++)
|
||||
{
|
||||
if (ProcessData->HandleTable[i] == NULL)
|
||||
|
@ -93,6 +110,10 @@ NTSTATUS STDCALL CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Handle
|
|||
{
|
||||
ULONG h = (((ULONG)Handle) >> 2) - 1;
|
||||
|
||||
if (ProcessData == NULL)
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
if (h >= ProcessData->HandleTableSize)
|
||||
{
|
||||
return STATUS_INVALID_HANDLE;
|
||||
|
|
Loading…
Reference in a new issue