diff -r 0659d0e1a03c -r 1d28c8722707 userlibandfileserver/fileserver/sfile/sf_ses.cpp --- a/userlibandfileserver/fileserver/sfile/sf_ses.cpp Wed Oct 20 13:58:28 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_ses.cpp Tue Nov 02 15:29:23 2010 +0000 @@ -375,13 +375,13 @@ TInt TFsSetDriveName::DoRequestL(CFsRequest* aRequest) { TInt driveNum=aRequest->Drive()->DriveNumber(); - TFileName driveName; - aRequest->ReadL(KMsgPtr1,driveName); + // Validate name - return KErrBadName if it contains illegal characters such as // * ? / | > < - TNameChecker checker(driveName); + TPtrC driveName(aRequest->Dest().FullName()); + TNameChecker checker(driveName); TText badChar; if (checker.IsIllegalName(badChar)) return(KErrBadName); @@ -398,7 +398,7 @@ } if (TheDriveNames[driveNum]==NULL || TheDriveNames[driveNum]->Des().MaxLength()Dest().FullName(); return(KErrNone); } @@ -407,6 +407,13 @@ TInt r=ValidateDrive(aRequest->Message().Int0(),aRequest); if (r!=KErrNone) return(r); + + TFileName driveName; + aRequest->ReadL(KMsgPtr1,driveName); + r = aRequest->Dest().Set(driveName,NULL,NULL); + if (r!=KErrNone) + return(r); + if (!KCapFsSetDriveName.CheckPolicy(aRequest->Message(), __PLATSEC_DIAGNOSTIC_STRING("Set Drive Name"))) return KErrPermissionDenied; return KErrNone;