--- a/userlibandfileserver/fileserver/swins/elocal.cpp Tue Jan 19 13:48:03 2010 +0000
+++ b/userlibandfileserver/fileserver/swins/elocal.cpp Mon Jan 18 21:31:10 2010 +0200
@@ -374,7 +374,14 @@
if (IsRomDrive())
User::Leave(KErrAccessDenied);
- TFileName n;
+
+ //-- check entry attributes
+ TEntry entry;
+ EntryL(aName, entry);
+ if (entry.IsDir() || entry.IsReadOnly())
+ User::Leave(KErrAccessDenied);
+
+ TFileName n;
MapFileNameL(n,Drive().DriveNumber(),aName);
BOOL b=Emulator::DeleteFile(StrPtrZL(n));
@@ -947,8 +954,8 @@
if (h==INVALID_HANDLE_VALUE)
User::Leave(Emulator::LastError());
FindClose(h);
- if (d.cAlternateFileName[0]) // we have a dos name too
- aShortName=(TText*)(&d.cAlternateFileName[0]);
+ if (d.cAlternateFileName[0]) // we have a dos name too
+ aShortName=(TText*)(&d.cAlternateFileName[0]);
else
aShortName=(TText*)(&d.cFileName[0]);
}
@@ -1411,7 +1418,7 @@
CheckPosL(aPos);
TInt pos=0;
TInt len=aLength;
- TBuf8<0x1000> buf;
+ TBuf8<65536> buf;
if (aMessage.Handle() == KLocalMessageHandle)
((TPtr8* )aDes)->SetLength(0);
@@ -1471,7 +1478,7 @@
CheckPosL(aPos);
TInt pos=0;
TInt len=aLength;
- TBuf8<0x1000> buf;
+ TBuf8<65536> buf;
while (len)
{