X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2FWINNT%2Fafsrdr%2Fkernel%2Ffs%2FAFSCommSupport.cpp;h=210c7a2f3af2e3482714d95457972783eb49b1e1;hp=9e4694936e00805fe24849fbe238cb1421add9bf;hb=3ee5e20170b4c42f6fccabaf70e28d14e35fae53;hpb=8a17568fb4fd3f77a3b9d043bbe49e992bca8266 diff --git a/src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp b/src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp index 9e46949..210c7a2f 100644 --- a/src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp +++ b/src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp @@ -438,6 +438,8 @@ AFSProcessControlRequest( IN PIRP Irp) pIrpSp->FileObject->FsContext = (void *)((ULONG_PTR)pIrpSp->FileObject->FsContext | AFS_CONTROL_INSTANCE); + AFSRegisterService(); + break; } @@ -446,6 +448,14 @@ AFSProcessControlRequest( IN PIRP Irp) AFSRedirectorInitInfo *pRedirInitInfo = (AFSRedirectorInitInfo *)Irp->AssociatedIrp.SystemBuffer; + if ( !AFSIsService()) + { + + ntStatus = STATUS_ACCESS_DENIED; + + break; + } + // // Extract off the passed in information which contains the // cache file parameters @@ -485,6 +495,14 @@ AFSProcessControlRequest( IN PIRP Irp) case IOCTL_AFS_PROCESS_IRP_REQUEST: { + if ( !AFSIsService()) + { + + ntStatus = STATUS_ACCESS_DENIED; + + break; + } + ntStatus = AFSProcessIrpRequest( Irp); break; @@ -493,6 +511,14 @@ AFSProcessControlRequest( IN PIRP Irp) case IOCTL_AFS_PROCESS_IRP_RESULT: { + if ( !AFSIsService()) + { + + ntStatus = STATUS_ACCESS_DENIED; + + break; + } + ntStatus = AFSProcessIrpResult( Irp); break; @@ -503,6 +529,14 @@ AFSProcessControlRequest( IN PIRP Irp) AFSSysNameNotificationCB *pSysNameInfo = (AFSSysNameNotificationCB *)Irp->AssociatedIrp.SystemBuffer; + if ( !AFSIsService()) + { + + ntStatus = STATUS_ACCESS_DENIED; + + break; + } + if( pSysNameInfo == NULL || pIrpSp->Parameters.DeviceIoControl.InputBufferLength < sizeof( AFSSysNameNotificationCB)) { @@ -634,6 +668,14 @@ AFSProcessControlRequest( IN PIRP Irp) case IOCTL_AFS_SHUTDOWN: { + if ( !AFSIsService()) + { + + ntStatus = STATUS_ACCESS_DENIED; + + break; + } + ntStatus = AFSShutdownRedirector(); break; @@ -642,7 +684,6 @@ AFSProcessControlRequest( IN PIRP Irp) case IOCTL_AFS_AUTHGROUP_CREATE_AND_SET: { - AFSAuthGroupRequestCB *pAuthGroupRequestCB = (AFSAuthGroupRequestCB *)Irp->AssociatedIrp.SystemBuffer; if( pAuthGroupRequestCB == NULL || @@ -1050,6 +1091,7 @@ AFSCleanupIrpPool() // AFSReleaseResource( &pCommSrvc->ResultPoolLock); + } return;