--- 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()<len)
return(KErrNoMemory);
- *TheDriveNames[driveNum]=driveName;
+ *TheDriveNames[driveNum]=aRequest->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;