summaryrefslogtreecommitdiffstats
path: root/sandbox/win/src/filesystem_interception.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/win/src/filesystem_interception.cc')
-rw-r--r--sandbox/win/src/filesystem_interception.cc18
1 files changed, 8 insertions, 10 deletions
diff --git a/sandbox/win/src/filesystem_interception.cc b/sandbox/win/src/filesystem_interception.cc
index 179cad5..043e1fa 100644
--- a/sandbox/win/src/filesystem_interception.cc
+++ b/sandbox/win/src/filesystem_interception.cc
@@ -74,14 +74,15 @@ NTSTATUS WINAPI TargetNtCreateFile(NtCreateFileFunction orig_CreateFile,
if (SBOX_ALL_OK != code)
break;
+ status = answer.nt_status;
+
if (!NT_SUCCESS(answer.nt_status))
- return answer.nt_status;
+ break;
__try {
*file = answer.handle;
io_status->Status = answer.nt_status;
io_status->Information = answer.extended[0].ulong_ptr;
- status = io_status->Status;
} __except(EXCEPTION_EXECUTE_HANDLER) {
break;
}
@@ -145,14 +146,15 @@ NTSTATUS WINAPI TargetNtOpenFile(NtOpenFileFunction orig_OpenFile, PHANDLE file,
if (SBOX_ALL_OK != code)
break;
+ status = answer.nt_status;
+
if (!NT_SUCCESS(answer.nt_status))
- return answer.nt_status;
+ break;
__try {
*file = answer.handle;
io_status->Status = answer.nt_status;
io_status->Information = answer.extended[0].ulong_ptr;
- status = io_status->Status;
} __except(EXCEPTION_EXECUTE_HANDLER) {
break;
}
@@ -208,12 +210,10 @@ NTSTATUS WINAPI TargetNtQueryAttributesFile(
ResultCode code = CrossCall(ipc, IPC_NTQUERYATTRIBUTESFILE_TAG, name,
attributes, file_info, &answer);
- operator delete(name, NT_ALLOC);
-
if (SBOX_ALL_OK != code)
break;
- return answer.nt_status;
+ status = answer.nt_status;
} while (false);
@@ -269,12 +269,10 @@ NTSTATUS WINAPI TargetNtQueryFullAttributesFile(
ResultCode code = CrossCall(ipc, IPC_NTQUERYFULLATTRIBUTESFILE_TAG, name,
attributes, file_info, &answer);
- operator delete(name, NT_ALLOC);
-
if (SBOX_ALL_OK != code)
break;
- return answer.nt_status;
+ status = answer.nt_status;
} while (false);
if (name)