diff -r 79859ed3eea9 -r 919f36ff910f browserutilities/feedsengine/FeedsServer/Server/src/FeedsServer.cpp --- a/browserutilities/feedsengine/FeedsServer/Server/src/FeedsServer.cpp Tue Aug 31 16:17:46 2010 +0300 +++ b/browserutilities/feedsengine/FeedsServer/Server/src/FeedsServer.cpp Wed Sep 01 12:28:30 2010 +0100 @@ -15,30 +15,31 @@ * */ - #include "FeedsDatabase.h" #include "FeedHandler.h" #include "FeedsServer.h" -#include "FeedsServerMsg.h" +#include #include "FeedsServerSession.h" #include "OpmlParser.h" #include "OpmlWriter.h" #include "PackedFolder.h" #include "ServerHttpConnection.h" #include "Logger.h" -#include "XMLUtils.h" +#include #include "BackRestoreHandler.h" #include "UpdateManager.h" // CONSTANTS _LIT(KFeedsServerPanic, "FeedsServer"); - +// opml files are generally smaller in size.But if a malformed opml +// greater than 400kB would cause the system to be irresponsive. +// So limit the max size to 400 kB +const TInt KMaxOPMLFileSize = 409600; //_LIT(KFileSchema, "file://c:"); _LIT(KDefaultFeed, "default_feeds.xml"); _LIT(KDefaultOPMLFileParam, ""); - // ----------------------------------------------------------------------------- // CFeedsServer::NewL // @@ -387,7 +388,10 @@ // Read file User::LeaveIfError(aFile.Size(size)); - + if ( size > KMaxOPMLFileSize ) + { + User::Leave(KErrCorrupt); + } buffer = HBufC8::NewLC(size); bufferPtr.Set(buffer->Des()); @@ -560,6 +564,7 @@ void CFeedsServer::ScheduleUpdateManagerL() { RArray folderListIds; + CleanupClosePushL(folderListIds); TBool autoUpdate = EFalse; TInt autoUpdateFreq = 0; TUint32 autoUpdateAP = 0; @@ -578,6 +583,8 @@ } } } + + CleanupStack::PopAndDestroy(); //folderListIds } // -----------------------------------------------------------------------------