From 92dc2feecdee90e93c9b5e1ff6645d6b41439b02 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Wed, 5 Oct 2016 17:38:16 -0700 Subject: [PATCH] sys: use main file security cache --- src/sys/driver.h | 3 +++ src/sys/file.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/sys/driver.h b/src/sys/driver.h index 9758c5bc..8b7af81f 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -1022,6 +1022,9 @@ BOOLEAN FspFileNodeTrySetSecurity(FSP_FILE_NODE *FileNode, PCVOID Buffer, ULONG static inline ULONG FspFileNodeSecurityChangeNumber(FSP_FILE_NODE *FileNode) { + if (0 != FileNode->MainFileNode) + FileNode = FileNode->MainFileNode; + return FileNode->SecurityChangeNumber; } BOOLEAN FspFileNodeReferenceDirInfo(FSP_FILE_NODE *FileNode, PCVOID *PBuffer, PULONG PSize); diff --git a/src/sys/file.c b/src/sys/file.c index 97cb10c9..57487a58 100644 --- a/src/sys/file.c +++ b/src/sys/file.c @@ -945,6 +945,9 @@ BOOLEAN FspFileNodeReferenceSecurity(FSP_FILE_NODE *FileNode, PCVOID *PBuffer, P { PAGED_CODE(); + if (0 != FileNode->MainFileNode) + FileNode = FileNode->MainFileNode; + FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(FileNode->FsvolDeviceObject); @@ -956,6 +959,9 @@ VOID FspFileNodeSetSecurity(FSP_FILE_NODE *FileNode, PCVOID Buffer, ULONG Size) { PAGED_CODE(); + if (0 != FileNode->MainFileNode) + FileNode = FileNode->MainFileNode; + FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(FileNode->FsvolDeviceObject); @@ -970,6 +976,9 @@ BOOLEAN FspFileNodeTrySetSecurity(FSP_FILE_NODE *FileNode, PCVOID Buffer, ULONG { PAGED_CODE(); + if (0 != FileNode->MainFileNode) + FileNode = FileNode->MainFileNode; + if (FileNode->SecurityChangeNumber != SecurityChangeNumber) return FALSE;