X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=drivers%2Ffilesystems%2Fnpfs%2Fcreate.c;h=96e60e306a9de0233921318d3971907e51c76d36;hp=d1b6479d1f60738c4de068b2be8b9f7e408b3ab4;hb=704baed2df04470ab134cef207847764e3d95e2e;hpb=f4388e723dd87c3e09647b29e9f5bea660ed1a92 diff --git a/drivers/filesystems/npfs/create.c b/drivers/filesystems/npfs/create.c index d1b6479d1f6..96e60e306a9 100644 --- a/drivers/filesystems/npfs/create.c +++ b/drivers/filesystems/npfs/create.c @@ -96,7 +96,7 @@ NpOpenNamedPipeRootDirectory(IN PNP_DCB Dcb, IoStatus.Information = 0; } - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -122,7 +122,6 @@ NpCreateClientEnd(IN PNP_FCB Fcb, PNP_CCB Ccb = NULL; TRACE("Entered\n"); - IoStatus.Status = STATUS_SUCCESS; IoStatus.Information = 0; Privileges = NULL; @@ -172,7 +171,7 @@ NpCreateClientEnd(IN PNP_FCB Fcb, ((GrantedAccess & FILE_WRITE_DATA) && (NamedPipeConfiguration == FILE_PIPE_OUTBOUND))) { IoStatus.Status = STATUS_ACCESS_DENIED; - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -191,7 +190,7 @@ NpCreateClientEnd(IN PNP_FCB Fcb, if (NextEntry == ListHead) { IoStatus.Status = STATUS_PIPE_NOT_AVAILABLE; - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -202,7 +201,7 @@ NpCreateClientEnd(IN PNP_FCB Fcb, if (!NT_SUCCESS(IoStatus.Status)) { NpUninitializeSecurity(Ccb); - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -211,7 +210,7 @@ NpCreateClientEnd(IN PNP_FCB Fcb, IoStatus.Information = FILE_OPENED; IoStatus.Status = STATUS_SUCCESS; - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -373,7 +372,6 @@ NpFsdCreate(IN PDEVICE_OBJECT DeviceObject, ACCESS_MASK DesiredAccess; LIST_ENTRY DeferredList; UNICODE_STRING Prefix; - NTSTATUS Status; TRACE("Entered\n"); InitializeListHead(&DeferredList); @@ -384,10 +382,9 @@ NpFsdCreate(IN PDEVICE_OBJECT DeviceObject, DesiredAccess = IoStack->Parameters.CreatePipe.SecurityContext->DesiredAccess; IoStatus.Information = 0; - IoStatus.Status = STATUS_SUCCESS; FsRtlEnterFileSystem(); - ExAcquireResourceExclusiveLite(&NpVcb->Lock, TRUE); + NpAcquireExclusiveVcb(); if (RelatedFileObject) { @@ -428,8 +425,8 @@ NpFsdCreate(IN PDEVICE_OBJECT DeviceObject, goto Quickie; } - Status = NpTranslateAlias(&FileName); - if (!NT_SUCCESS(Status)) goto Quickie; + IoStatus.Status = NpTranslateAlias(&FileName); + if (!NT_SUCCESS(IoStatus.Status)) goto Quickie; if (RelatedFileObject) { @@ -465,7 +462,7 @@ NpFsdCreate(IN PDEVICE_OBJECT DeviceObject, goto Quickie; } - Fcb = NpFindPrefix(&FileName, TRUE, &Prefix); + Fcb = NpFindPrefix(&FileName, 1, &Prefix); } if (Prefix.Length) @@ -502,7 +499,7 @@ NpFsdCreate(IN PDEVICE_OBJECT DeviceObject, &DeferredList); Quickie: - ExReleaseResourceLite(&NpVcb->Lock); + NpReleaseVcb(); NpCompleteDeferredIrps(&DeferredList); FsRtlExitFileSystem(); @@ -543,6 +540,8 @@ NpCreateExistingNamedPipe(IN PNP_FCB Fcb, SubjectSecurityContext = &AccessState->SubjectSecurityContext; SeLockSubjectContext(SubjectSecurityContext); + IoStatus.Information = 0; + AccessGranted = SeAccessCheck(Fcb->SecurityDescriptor, SubjectSecurityContext, TRUE, @@ -581,21 +580,21 @@ NpCreateExistingNamedPipe(IN PNP_FCB Fcb, SeUnlockSubjectContext(SubjectSecurityContext); if (!AccessGranted) { - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } if (Fcb->CurrentInstances >= Fcb->MaximumInstances) { IoStatus.Status = STATUS_INSTANCE_NOT_AVAILABLE; - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } if (Disposition == FILE_CREATE) { IoStatus.Status = STATUS_ACCESS_DENIED; - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -616,7 +615,7 @@ NpCreateExistingNamedPipe(IN PNP_FCB Fcb, if (CheckShareAccess != ShareAccess) { IoStatus.Status = STATUS_ACCESS_DENIED; - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -638,7 +637,7 @@ NpCreateExistingNamedPipe(IN PNP_FCB Fcb, { --Ccb->Fcb->CurrentInstances; NpDeleteCcb(Ccb, List); - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -647,8 +646,8 @@ NpCreateExistingNamedPipe(IN PNP_FCB Fcb, NpCheckForNotify(Fcb->ParentDcb, 0, List); IoStatus.Status = STATUS_SUCCESS; - IoStatus.Information = 1; - TRACE("Leaving, IoStatus = %lx\n", IoStatus); + IoStatus.Information = FILE_OPENED; + TRACE("Leaving, IoStatus.Status = %lx\n", IoStatus.Status); return IoStatus; } @@ -664,7 +663,7 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb, IN PNAMED_PIPE_CREATE_PARAMETERS Parameters, IN PEPROCESS Process, IN PLIST_ENTRY List, - IN PIO_STATUS_BLOCK IoStatus) + OUT PIO_STATUS_BLOCK IoStatus) { NTSTATUS Status; USHORT NamedPipeConfiguration; @@ -677,7 +676,7 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb, if (!(Parameters->TimeoutSpecified) || !(Parameters->MaximumInstances) || - (Parameters->DefaultTimeout.HighPart >= 0)) + (Parameters->DefaultTimeout.QuadPart >= 0)) { Status = STATUS_INVALID_PARAMETER; goto Quickie; @@ -707,7 +706,8 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb, goto Quickie; } - if (!Parameters->NamedPipeType && Parameters->ReadMode == 1) + if (Parameters->NamedPipeType == FILE_PIPE_BYTE_STREAM_TYPE && + Parameters->ReadMode == FILE_PIPE_MESSAGE_MODE) { Status = STATUS_INVALID_PARAMETER; goto Quickie; @@ -737,12 +737,12 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb, } SecurityContext = &AccessState->SubjectSecurityContext; - SeLockSubjectContext(&AccessState->SubjectSecurityContext); + SeLockSubjectContext(SecurityContext); - Status = SeAssignSecurity(0, + Status = SeAssignSecurity(NULL, AccessState->SecurityDescriptor, &SecurityDescriptor, - 0, + FALSE, SecurityContext, IoGetFileObjectGenericMapping(), PagedPool); @@ -757,7 +757,7 @@ NpCreateNewNamedPipe(IN PNP_DCB Dcb, Status = ObLogSecurityDescriptor(SecurityDescriptor, &CachedSecurityDescriptor, 1); - ExFreePool(SecurityDescriptor); + ExFreePoolWithTag(SecurityDescriptor, 0); if (!NT_SUCCESS(Status)) { @@ -817,7 +817,6 @@ NpFsdCreateNamedPipe(IN PDEVICE_OBJECT DeviceObject, FileName = FileObject->FileName; - IoStatus.Status = STATUS_SUCCESS; IoStatus.Information = 0; FsRtlEnterFileSystem(); @@ -854,7 +853,7 @@ NpFsdCreateNamedPipe(IN PDEVICE_OBJECT DeviceObject, goto Quickie; } - Fcb = NpFindPrefix(&FileName, TRUE, &Prefix); + Fcb = NpFindPrefix(&FileName, 1, &Prefix); } if (Prefix.Length)