sys: FspFsvolSetEa: check EaName validity

This commit is contained in:
Bill Zissimopoulos 2019-03-13 21:45:09 -07:00
parent d8686a7726
commit 3dd8ae24a8
No known key found for this signature in database
GPG Key ID: 3D4F95D52C7B3EA3

View File

@ -502,6 +502,23 @@ static NTSTATUS FspFsvolSetEa(
if (!NT_SUCCESS(Result)) if (!NT_SUCCESS(Result))
return Result; return Result;
for (PFILE_FULL_EA_INFORMATION Ea = Buffer, EaEnd = (PVOID)((PUINT8)Ea + Length);
EaEnd > Ea && 0 != Ea->NextEntryOffset;
Ea = (PVOID)((PUINT8)Ea + Ea->NextEntryOffset))
{
STRING Name;
Name.Length = Name.MaximumLength = Ea->EaNameLength;
Name.Buffer = Ea->EaName;
if (!FspEaNameIsValid(&Name))
{
Result = STATUS_INVALID_EA_NAME;
Irp->IoStatus.Information = (ULONG)((PUINT8)Ea - (PUINT8)Buffer);
return Result;
}
}
FspFileNodeAcquireExclusive(FileNode, Full); FspFileNodeAcquireExclusive(FileNode, Full);
Result = FspIopCreateRequestEx(Irp, 0, Length, FspFsvolSetEaRequestFini, Result = FspIopCreateRequestEx(Irp, 0, Length, FspFsvolSetEaRequestFini,