diff -r d37db4dcc88d -r 1560c419b176 userlibandfileserver/fileserver/sfile/sf_ext.cpp --- a/userlibandfileserver/fileserver/sfile/sf_ext.cpp Tue Aug 24 14:49:21 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_ext.cpp Tue Aug 31 11:31:15 2010 +0100 @@ -1468,16 +1468,22 @@ } TInt TFsMountExtension::Initialise(CFsRequest* aRequest) -// -// -// { - TInt r=ValidateDrive(aRequest->Message().Int1(),aRequest); + TInt r; + + //-- check extension name length. It should not exceed KMaxFSNameLength (32 characters) + r = aRequest->GetDesLength(KMsgPtr0); + if(r <=0 || r >KMaxFSNameLength) + return KErrArgument; + + r = ValidateDrive(aRequest->Message().Int1(),aRequest); if(r!=KErrNone) - return(r); + return r; + if(aRequest->Drive()->IsSubsted()) - return(KErrNotSupported); - return(r); + return KErrNotSupported; + + return r; } @@ -1486,7 +1492,7 @@ // Dismount extension // { - TFullName name; + TFSName name; aRequest->ReadL(KMsgPtr0,name); CProxyDriveFactory* pE=GetExtension(name); if (pE==NULL) @@ -1496,18 +1502,25 @@ TInt TFsDismountExtension::Initialise(CFsRequest* aRequest) -// -// -// { + TInt r; + + //-- check extension name length. It should not exceed KMaxFSNameLength (32 characters) + r = aRequest->GetDesLength(KMsgPtr0); + if(r <=0 || r >KMaxFSNameLength) + return KErrArgument; + if (!KCapFsDismountExtension.CheckPolicy(aRequest->Message(), __PLATSEC_DIAGNOSTIC_STRING("Dismount File Extension"))) return KErrPermissionDenied; - TInt r=ValidateDrive(aRequest->Message().Int1(),aRequest); + + r = ValidateDrive(aRequest->Message().Int1(),aRequest); if(r!=KErrNone) - return(r); + return r; + if(aRequest->Drive()->IsSubsted()) return(KErrNotSupported); - return(r); + + return r; } TInt TFsRemoveExtension::DoRequestL(CFsRequest* aRequest)