#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];
{
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 */
ULONG i;
PVOID* NewBlock;
+ if (ProcessData == NULL)
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
for (i = 0; i < ProcessData->HandleTableSize; i++)
{
if (ProcessData->HandleTable[i] == NULL)
return(STATUS_SUCCESS);
}
+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;
+ }
+
+ return ProcessData->HandleTable[h] ? STATUS_SUCCESS : STATUS_INVALID_HANDLE;
+}
/* EOF */