browserutilities/feedsengine/FeedsServer/Server/src/FeedsServer.cpp
branchRCL_3
changeset 49 919f36ff910f
parent 48 79859ed3eea9
--- 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 <feedsservermsg.h>
 #include "FeedsServerSession.h"
 #include "OpmlParser.h"
 #include "OpmlWriter.h"
 #include "PackedFolder.h"
 #include "ServerHttpConnection.h"
 #include "Logger.h"
-#include "XMLUtils.h"
+#include <xmlutils.h>
 #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<TInt>     folderListIds;
+	CleanupClosePushL(folderListIds);
     TBool    autoUpdate = EFalse;
     TInt     autoUpdateFreq = 0;
     TUint32  autoUpdateAP = 0;
@@ -578,6 +583,8 @@
                 }
             }
         }
+    
+    CleanupStack::PopAndDestroy(); //folderListIds
     }
 
 // -----------------------------------------------------------------------------