void CMsvSendExe::RetrievePackagesL() { //open the filestore CFileStore* store = CDirectFileStore::FromLC(iTaskFile);//pushes store RStoreReadStream instream; instream.OpenLC(*store,store->Root());//pushes instream //get task count TInt taskCount = instream.ReadInt32L(); SCHSENDLOG(FLog(iFileName, _L("\tTask Count=%d"), taskCount)); for (TInt curTask = 0; curTask < taskCount; curTask++) { CScheduledTask* task = CScheduledTask::NewLC(instream); AddPackageL(*task); CleanupStack::PopAndDestroy(task); } CleanupStack::PopAndDestroy(2, store); }
TInt CSecMgrStore::ReadCounter(TExecutableID& aExecID) { HBufC *configFile = HBufC::NewLC(KMaxName); TPtr ptr(configFile->Des()); TInt ret(GetConfigFile (ptr)); if ( KErrNone==ret) { if ( !BaflUtils::FileExists(iFsSession,*configFile)) { aExecID = (TExecutableID)KCRUIdSecMgr.iUid; BaflUtils::EnsurePathExistsL (iFsSession, *configFile); CleanupStack::PopAndDestroy (configFile); return WriteCounter (aExecID); } CFileStore* store = CPermanentFileStore::OpenLC (iFsSession, *configFile, EFileRead); RStoreReadStream instream; instream.OpenLC (*store, store->Root ()); aExecID = instream.ReadInt32L (); CleanupStack::PopAndDestroy (&instream); CleanupStack::PopAndDestroy (store); } CleanupStack::PopAndDestroy (configFile); return ret; }
/** @SYMTestCaseID SYSLIB-SCHSVR-CT-1345 @SYMTestCaseDesc Platform security Task handler test @SYMTestPriority High @SYMTestActions Attempt to test the contents of a task file. @SYMTestExpectedResults Test must not fail @SYMREQ REQ0000 */ LOCAL_C void ConstructConsoleL(RFile& aTaskFile, RTest& aTest) { CConsoleBase* console=Console::NewL(KConsoleName, TSize(KConsFullScreen, KConsFullScreen)); CleanupStack::PushL(console); console->Printf(_L(" contents of task file\n")); RArray<TCapability> enforcedCaps; CleanupStack::PushL(TCleanupItem(&DestroyArray,&enforcedCaps)); for (TInt i=0; i<ECapability_Limit; i++) { // we're checking here to see which capabilities are enforced, skipping // ECapabilityMultimediaDD and ECapabilityWriteDeviceData as it is // needed to write persistent schedules upon which this test relies. if (i == KPlatSecTestCapability) continue; else if (i == ECapabilityWriteDeviceData) continue; else if (PlatSec::IsCapabilityEnforced((TCapability)i)) enforcedCaps.Append((TCapability)i); } TBool isTestCapabilityEnforced = PlatSec::IsCapabilityEnforced(KPlatSecTestCapability); CFileStore* store; store = CDirectFileStore::FromLC(aTaskFile); RStoreReadStream instream; instream.OpenLC(*store,store->Root()); TInt count = instream.ReadInt32L(); for (TInt i=0;i<count;i++) { CScheduledTask* task = CScheduledTask::NewLC(instream); aTest(task->Info().iName.CompareF(KPlatSecTaskName)==0); aTest(task->Data().CompareF(KPlatSecTaskData)==0); aTest(task->SecurityInfo().iSecureId==KPlatSecTestSid); //This is the SID of tschsvrplatsec // check that client has capability it should have if(isTestCapabilityEnforced) aTest(task->SecurityInfo().iCaps.HasCapability(KPlatSecTestCapability)); // check that the client has ECapabilityWriteDeviceData aTest(task->SecurityInfo().iCaps.HasCapability(ECapabilityWriteDeviceData)); // check that client doesn't have any other capabilities for (TInt j=enforcedCaps.Count()-1; j>=0; --j) { aTest(!task->SecurityInfo().iCaps.HasCapability(enforcedCaps[j])); } CleanupStack::PopAndDestroy(task); } console->Printf(_L("Pausing for a one second...")); User::After(1000000); CleanupStack::PopAndDestroy(4); // instream, store, enforcedCaps, console }