if (!SandboxFactory::GetTargetServices()->GetState()->InitCalled())
return status;
+ wchar_t* name = NULL;
do {
if (!ValidParameter(file, sizeof(HANDLE), WRITE))
break;
if (NULL == memory)
break;
- wchar_t* name;
uint32 attributes = 0;
NTSTATUS ret = AllocAndCopyName(object_attributes, &name, &attributes,
NULL);
if (!NT_SUCCESS(ret) || NULL == name)
break;
- ULONG broker = FALSE;
+ uint32 desired_access_uint32 = desired_access;
+ uint32 options_uint32 = options;
+ uint32 broker = FALSE;
CountedParameterSet<OpenFile> params;
params[OpenFile::NAME] = ParamPickerMake(name);
- params[OpenFile::ACCESS] = ParamPickerMake(desired_access);
- params[OpenFile::OPTIONS] = ParamPickerMake(options);
+ params[OpenFile::ACCESS] = ParamPickerMake(desired_access_uint32);
+ params[OpenFile::OPTIONS] = ParamPickerMake(options_uint32);
params[OpenFile::BROKER] = ParamPickerMake(broker);
if (!QueryBroker(IPC_NTCREATEFILE_TAG, params.GetBase()))
// The following call must match in the parameters with
// FilesystemDispatcher::ProcessNtCreateFile.
ResultCode code = CrossCall(ipc, IPC_NTCREATEFILE_TAG, name, attributes,
- desired_access, file_attributes, sharing,
- disposition, options, &answer);
-
- operator delete(name, NT_ALLOC);
-
+ desired_access_uint32, file_attributes, sharing,
+ disposition, options_uint32, &answer);
if (SBOX_ALL_OK != code)
break;
}
} while (false);
+ if (name)
+ operator delete(name, NT_ALLOC);
+
return status;
}
if (!SandboxFactory::GetTargetServices()->GetState()->InitCalled())
return status;
+ wchar_t* name = NULL;
do {
if (!ValidParameter(file, sizeof(HANDLE), WRITE))
break;
if (NULL == memory)
break;
- wchar_t* name;
uint32 attributes;
NTSTATUS ret = AllocAndCopyName(object_attributes, &name, &attributes,
NULL);
if (!NT_SUCCESS(ret) || NULL == name)
break;
- ULONG broker = FALSE;
+ uint32 desired_access_uint32 = desired_access;
+ uint32 options_uint32 = options;
+ uint32 broker = FALSE;
CountedParameterSet<OpenFile> params;
params[OpenFile::NAME] = ParamPickerMake(name);
- params[OpenFile::ACCESS] = ParamPickerMake(desired_access);
- params[OpenFile::OPTIONS] = ParamPickerMake(options);
+ params[OpenFile::ACCESS] = ParamPickerMake(desired_access_uint32);
+ params[OpenFile::OPTIONS] = ParamPickerMake(options_uint32);
params[OpenFile::BROKER] = ParamPickerMake(broker);
if (!QueryBroker(IPC_NTOPENFILE_TAG, params.GetBase()))
SharedMemIPCClient ipc(memory);
CrossCallReturn answer = {0};
ResultCode code = CrossCall(ipc, IPC_NTOPENFILE_TAG, name, attributes,
- desired_access, sharing, options, &answer);
-
- operator delete(name, NT_ALLOC);
-
+ desired_access_uint32, sharing, options_uint32,
+ &answer);
if (SBOX_ALL_OK != code)
break;
}
} while (false);
+ if (name)
+ operator delete(name, NT_ALLOC);
+
return status;
}
if (!SandboxFactory::GetTargetServices()->GetState()->InitCalled())
return status;
+ wchar_t* name = NULL;
do {
if (!ValidParameter(file_attributes, sizeof(FILE_BASIC_INFORMATION), WRITE))
break;
if (NULL == memory)
break;
- wchar_t* name = NULL;
uint32 attributes = 0;
NTSTATUS ret = AllocAndCopyName(object_attributes, &name, &attributes,
NULL);
InOutCountedBuffer file_info(file_attributes,
sizeof(FILE_BASIC_INFORMATION));
- ULONG broker = FALSE;
+ uint32 broker = FALSE;
CountedParameterSet<FileName> params;
params[FileName::NAME] = ParamPickerMake(name);
params[FileName::BROKER] = ParamPickerMake(broker);
} while (false);
+ if (name)
+ operator delete(name, NT_ALLOC);
+
return status;
}
if (!SandboxFactory::GetTargetServices()->GetState()->InitCalled())
return status;
+ wchar_t* name = NULL;
do {
if (!ValidParameter(file_attributes, sizeof(FILE_NETWORK_OPEN_INFORMATION),
WRITE))
if (NULL == memory)
break;
- wchar_t* name = NULL;
uint32 attributes = 0;
NTSTATUS ret = AllocAndCopyName(object_attributes, &name, &attributes,
NULL);
InOutCountedBuffer file_info(file_attributes,
sizeof(FILE_NETWORK_OPEN_INFORMATION));
- ULONG broker = FALSE;
+ uint32 broker = FALSE;
CountedParameterSet<FileName> params;
params[FileName::NAME] = ParamPickerMake(name);
params[FileName::BROKER] = ParamPickerMake(broker);
return answer.nt_status;
} while (false);
+ if (name)
+ operator delete(name, NT_ALLOC);
+
return status;
}
if (!SandboxFactory::GetTargetServices()->GetState()->InitCalled())
return status;
+ wchar_t* name = NULL;
do {
void* memory = GetGlobalIPCMemory();
if (NULL == memory)
break;
}
- wchar_t* name;
NTSTATUS ret = AllocAndCopyName(&object_attributes, &name, NULL, NULL);
if (!NT_SUCCESS(ret) || !name)
break;
- ULONG broker = FALSE;
+ uint32 broker = FALSE;
CountedParameterSet<FileName> params;
params[FileName::NAME] = ParamPickerMake(name);
params[FileName::BROKER] = ParamPickerMake(broker);
status = answer.nt_status;
} while (false);
+ if (name)
+ operator delete(name, NT_ALLOC);
+
return status;
}