sys, dll: ea testing

This commit is contained in:
Bill Zissimopoulos 2019-03-15 11:21:11 -07:00
parent d3efdd9219
commit 9fd491fa3d
No known key found for this signature in database
GPG Key ID: 3D4F95D52C7B3EA3
3 changed files with 27 additions and 3 deletions

View File

@ -1807,7 +1807,7 @@ FSP_API NTSTATUS FspFileSystemEnumerateEa(FSP_FILE_SYSTEM *FileSystem,
{
NTSTATUS Result = STATUS_SUCCESS;
for (PFILE_FULL_EA_INFORMATION EaEnd = (PVOID)((PUINT8)Ea + EaLength);
EaEnd > Ea; FSP_NEXT_EA(Ea, EaEnd))
EaEnd > Ea; Ea = FSP_NEXT_EA(Ea, EaEnd))
{
Result = EnumerateEa(FileSystem, Context, Ea);
if (!NT_SUCCESS(Result))

View File

@ -306,7 +306,7 @@ static NTSTATUS FspFsvolCreateNoLock(
if (0 != EaBuffer)
{
/* does the file system support EA? */
if (FsvolDeviceExtension->VolumeParams.ExtendedAttributes)
if (!FsvolDeviceExtension->VolumeParams.ExtendedAttributes)
return STATUS_EAS_NOT_SUPPORTED;
/* do we need EA knowledge? */

View File

@ -70,6 +70,7 @@ static void ea_create_dotest(ULONG Flags, PWSTR Prefix)
FspFileSystemAddEa(&SingleEa.V, &Ea.V, sizeof Ea, &EaLength);
memset(&SingleEa, 0, sizeof SingleEa);
SingleEa.V.Flags = FILE_NEED_EA;
SingleEa.V.EaNameLength = (UCHAR)strlen("nameTwo");
SingleEa.V.EaValueLength = (USHORT)strlen("second");
lstrcpyA(SingleEa.V.EaName, "nameTwo");
@ -89,11 +90,34 @@ static void ea_create_dotest(ULONG Flags, PWSTR Prefix)
UnicodePath.MaximumLength = sizeof UnicodePathBuf;
UnicodePath.Buffer = UnicodePathBuf;
InitializeObjectAttributes(&Obja, &UnicodePath, 0, DirHandle, 0);
Result = NtCreateFile(&FileHandle,
FILE_GENERIC_READ | FILE_GENERIC_WRITE | DELETE, &Obja, &Iosb,
&LargeZero, FILE_ATTRIBUTE_NORMAL, 0,
FILE_CREATE, FILE_DELETE_ON_CLOSE,
FILE_CREATE, FILE_NO_EA_KNOWLEDGE,
&Ea, EaLength);
ASSERT(STATUS_ACCESS_DENIED == Result);
Result = NtCreateFile(&FileHandle,
FILE_GENERIC_READ | FILE_GENERIC_WRITE | DELETE, &Obja, &Iosb,
&LargeZero, FILE_ATTRIBUTE_NORMAL, 0,
FILE_CREATE, 0,
&Ea, EaLength);
ASSERT(STATUS_SUCCESS == Result);
CloseHandle(FileHandle);
Result = NtCreateFile(&FileHandle,
FILE_GENERIC_READ | FILE_GENERIC_WRITE | DELETE, &Obja, &Iosb,
&LargeZero, FILE_ATTRIBUTE_NORMAL, 0,
FILE_OPEN, FILE_NO_EA_KNOWLEDGE,
0, 0);
ASSERT(STATUS_ACCESS_DENIED == Result);
Result = NtCreateFile(&FileHandle,
FILE_GENERIC_READ | FILE_GENERIC_WRITE | DELETE, &Obja, &Iosb,
&LargeZero, FILE_ATTRIBUTE_NORMAL, 0,
FILE_OPEN, FILE_DELETE_ON_CLOSE,
0, 0);
ASSERT(STATUS_SUCCESS == Result);
CloseHandle(FileHandle);