diff -r 0659d0e1a03c -r 1d28c8722707 userlibandfileserver/fileserver/sfile/sf_svr.cpp --- a/userlibandfileserver/fileserver/sfile/sf_svr.cpp Wed Oct 20 13:58:28 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_svr.cpp Tue Nov 02 15:29:23 2010 +0000 @@ -211,7 +211,7 @@ return(ret); } aRequest->SetScratchValue(monitorAllDrives); - ret = PathCheck(aRequest,aRequest->Src().FullName().Mid(2),&KCapFsNotifyChangeEx, __PLATSEC_DIAGNOSTIC_STRING("Extended Change Notifier")); + ret = PathCheck(aRequest->Message(),aRequest->Src().FullName().Mid(2),&KCapFsNotifyChangeEx, __PLATSEC_DIAGNOSTIC_STRING("Extended Change Notifier")); return(ret); } @@ -594,13 +594,9 @@ if(r != KErrNone) return r; - TFileName volumeName; - aRequest->ReadL(KMsgPtr0,volumeName); - if (volumeName.Length()>KMaxVolumeNameLength) // KMaxVolumeNameLength = 11 - return(KErrBadName); - // Validate name - return KErrBadName if it contains illegal characters such as * ? / | > < - TNameChecker checker(volumeName); + TPtrC volumeName(aRequest->Dest().FullName()); + TNameChecker checker(volumeName); TText badChar; if (checker.IsIllegalName(badChar)) return(KErrBadName); @@ -617,6 +613,17 @@ TInt r=ValidateDriveDoSubst(aRequest->Message().Int1(),aRequest); if (r!=KErrNone) return(r); + TFileName volumeName; + TRAP(r,aRequest->ReadL(KMsgPtr0,volumeName)); + if(r!=KErrNone) + return r; + if (volumeName.Length()>KMaxVolumeNameLength) // KMaxVolumeNameLength = 11 + return(KErrBadName); + + r = aRequest->Dest().Set(volumeName,NULL,NULL); + if(r!=KErrNone) + return r; + if (!KCapFsSetVolume.CheckPolicy(aRequest->Message(), __PLATSEC_DIAGNOSTIC_STRING("Set Volume"))) return KErrPermissionDenied; return KErrNone; @@ -671,7 +678,7 @@ pD->SetSubstedDrive(NULL); return(KErrNone); } - r=PathCheck(aRequest,aRequest->Src().FullName().Mid(2),&KCapFsSysSetSubst,&KCapFsPriSetSubst,&KCapFsROSetSubst, __PLATSEC_DIAGNOSTIC_STRING("Set Subst")); + r=PathCheck(aRequest->Message(),aRequest->Src().FullName().Mid(2),&KCapFsSysSetSubst,&KCapFsPriSetSubst,&KCapFsROSetSubst, __PLATSEC_DIAGNOSTIC_STRING("Set Subst")); if (r!=KErrNone) return(r); if (pD->Att()&(KDriveAttLocal|KDriveAttRom|KDriveAttRedirected|KDriveAttSubsted)) @@ -710,7 +717,7 @@ TInt r=ParseSubstPtr0(aRequest,aRequest->Src()); if (r!=KErrNone) return(r); - r=PathCheck(aRequest,aRequest->Src().FullName().Mid(2),&KCapFsSysRealName,&KCapFsPriRealName, __PLATSEC_DIAGNOSTIC_STRING("Real Name")); + r=PathCheck(aRequest->Message(),aRequest->Src().FullName().Mid(2),&KCapFsSysRealName,&KCapFsPriRealName, __PLATSEC_DIAGNOSTIC_STRING("Real Name")); if (r!=KErrNone) return(r); TFileName substName; @@ -869,7 +876,7 @@ TInt r=ParsePathPtr0(aRequest,parse); if (r!=KErrNone && r!=KErrInUse) return(r); - r=PathCheck(aRequest,parse.FullName().Mid(2),&KCapFsSysSetSessionPath,&KCapFsPriSetSessionPath, __PLATSEC_DIAGNOSTIC_STRING("Set Session Path")); + r=PathCheck(aRequest->Message(),parse.FullName().Mid(2),&KCapFsSysSetSessionPath,&KCapFsPriSetSessionPath, __PLATSEC_DIAGNOSTIC_STRING("Set Session Path")); if (r!=KErrNone) return(r); if (IsIllegalFullName(parse.FullName()))