kerneltest/e32test/rm_debug/t_trkdummyapp.cpp
changeset 9 96e5fb8b040d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/rm_debug/t_trkdummyapp.cpp	Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,532 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Ensure that old insecure Trk debug agent cannot be installed
+// as it should be blocked from SWInstall'ing by a trkdummyapp.exe contained within
+// the base OS with the same SID as the insecure Trk.
+// 
+//
+
+#include <e32base.h>
+#include <e32base_private.h>
+#include <e32cons.h>
+#include <e32test.h>
+#include <e32ldr.h>
+#include <e32cmn.h>
+#include <e32cmn_private.h>
+#include <f32dbg.h>
+#include <f32file.h>
+#include "t_trkdummyapp.h"
+
+LOCAL_D RTest test(_L("T_TRKDUMMYAPP"));
+
+CTrkDummyAppTest::CTrkDummyAppTest()
+//
+// CTrkDummyAppTest constructor
+//
+	{
+	// nothing to do
+	}
+
+CTrkDummyAppTest* CTrkDummyAppTest::NewL()
+//
+// CRunModeAgent::NewL
+//
+	{
+	CTrkDummyAppTest* self = new(ELeave) CTrkDummyAppTest();
+
+  	self->ConstructL();
+
+	return self;
+	}
+
+CTrkDummyAppTest::~CTrkDummyAppTest()
+//
+// CTrkDummyAppTest destructor
+//
+	{
+	// Nothing to do
+	}
+
+void CTrkDummyAppTest::ConstructL()
+//
+// CTrkDummyAppTest::ConstructL
+//
+	{
+	// nothing to do here
+	}
+
+
+CTrkDummyAppTest *TrkDummyTest;
+
+//----------------------------------------------------------------------------------------------
+//! @SYMTestCaseID      KBase-T-TRKDUMMYAPP-0792
+//! @SYMTestType        
+//! @SYMPREQ            PREQ1426
+//! @SYMTestCaseDesc    Tests that a known insecure debug agent trkapp.sis cannot be installed
+//!                     by ensuring the existence of a Symbian OS common app called trkdummyapp.exe
+//!                     already exists with the same Secure ID as the insecure app.
+//! @SYMTestActions     
+//!    
+//!     1.              Calls RProcess.Create() on z:\sys\bin\trkdummyapp.exe. Fail if unsuccessful.
+//!     
+//!     2.              Obtain the Secure ID of the process derived from z:\sys\bin\trkdummyapp.exe.
+//!
+//!     3.              Close the process derived from z:\sys\bin\trkdummyapp.exe.
+//!
+//! @SYMTestExpectedResults 
+//!
+//!     1.              Fails if unable to create a process from z:\sys\bin\trkdummyapp.exe.
+//!
+//!     2.              The Secure ID of trkdummyapp.exe has the Secure ID 0x101F7159. Fail otherwise.
+//! 
+//! @SYMTestPriority        High
+//! @SYMTestStatus          Implemented
+//----------------------------------------------------------------------------------------------
+
+// Names of some test programs used for testing security
+_LIT(KRMDebugSecurityTrkDummyApp,"z:\\sys\\bin\\trkdummyapp.exe");
+
+void CTrkDummyAppTest::TestSecurityCheckPreventInsecureTrkDebugAgent(void)
+	{
+
+	test.Next(_L("TestSecurityCheckPreventInsecureTrkDebugAgent, SID 0x101F7159\n"));
+
+	RProcess process;
+	TInt err = process.Create(KRMDebugSecurityTrkDummyApp, KNullDesC, EOwnerProcess);
+	test (err == KErrNone);
+
+	// rendezvous with process
+	TRequestStatus status;
+	process.Rendezvous(status);
+
+	// obtain the secure ID for the process
+	TSecurityInfo secInfo(process);
+
+	static const TSecureId KTrkDummyAppSID = 0x101F7159;
+
+	test(secInfo.iSecureId.iId == KTrkDummyAppSID);
+
+	// Kill the process, as we don't need it anymore
+	process.Kill(KErrNone);
+
+	process.Close();
+	}
+
+//----------------------------------------------------------------------------------------------
+//! @SYMTestCaseID      KBase-T-TRKDUMMYAPP-0793
+//! @SYMTestType        
+//! @SYMPREQ            PREQ1426
+//! @SYMTestCaseDesc    Tests that a known insecure debug agent trkapp.sis cannot be installed
+//!                     by ensuring the existence of a Symbian OS common app called trkdummyapp.exe
+//!                     already exists with the same Secure ID as the insecure app.
+//! @SYMTestActions     
+//!    
+//!     1.              Calls RProcess.Create() on z:\sys\bin\trkdummyapp2.exe. Fail if unsuccessful.
+//!     
+//!     2.              Obtain the Secure ID of the process derived from z:\sys\bin\trkdummyapp2.exe.
+//!
+//!     3.              Close the process derived from z:\sys\bin\trkdummyapp2.exe.
+//!
+//! @SYMTestExpectedResults 
+//!
+//!     1.              Fails if unable to create a process from z:\sys\bin\trkdummyapp2.exe.
+//!
+//!     2.              The Secure ID of trkdummyapp.exe has the Secure ID 0x2000a7dd. Fail otherwise.
+//! 
+//! @SYMTestPriority        High
+//! @SYMTestStatus          Implemented
+//----------------------------------------------------------------------------------------------
+
+// Names of some test programs used for testing security
+_LIT(KRMDebugSecurityTrkDummyApp2,"z:\\sys\\bin\\trkdummyapp2.exe");
+
+void CTrkDummyAppTest::TestSecurityCheckPreventInsecureTrkDebugAgent2(void)
+	{
+
+	test.Next(_L("TestSecurityCheckPreventInsecureTrkDebugAgent2, SID 0x2000a7dd\n"));
+
+	RProcess process;
+	TInt err = process.Create(KRMDebugSecurityTrkDummyApp2, KNullDesC, EOwnerProcess);
+	test (err == KErrNone);
+
+	// rendezvous with process
+	TRequestStatus status;
+	process.Rendezvous(status);
+
+	// obtain the secure ID for the process
+	TSecurityInfo secInfo(process);
+
+	static const TSecureId KTrkDummyAppSID2 = 0x2000a7dd;
+
+	test(secInfo.iSecureId.iId == KTrkDummyAppSID2);
+
+	// Kill the process, as we don't need it anymore
+	process.Kill(KErrNone);
+
+	process.Close();
+	}
+
+//----------------------------------------------------------------------------------------------
+//! @SYMTestCaseID      KBase-T-TRKDUMMYAPP-2396
+//! @SYMTestType        
+//! @SYMPREQ            PREQ1426
+//! @SYMTestCaseDesc    Tests that a known insecure debug agent trkapp.sis cannot be installed
+//!                     by ensuring the existence of a Symbian OS common app called trkdummyapp200159D8.exe
+//!                     already exists with the same Secure ID as the insecure app.
+//! @SYMTestActions     
+//!    
+//!     1.              Calls RProcess.Create() on z:\sys\bin\trkdummyapp200159D8.exe. Fail if unsuccessful.
+//!     
+//!     2.              Obtain the Secure ID of the process derived from z:\sys\bin\trkdummyapp200159D8.exe.
+//!
+//!     3.              Close the process derived from z:\sys\bin\trkdummyapp200159D8.exe.
+//!
+//! @SYMTestExpectedResults 
+//!
+//!     1.              Fails if unable to create a process from z:\sys\bin\trkdummyapp200159D8.exe.
+//!
+//!     2.              The Secure ID of trkdummyapp200159D8.exe has the Secure ID 0x200159D8. Fail otherwise.
+//! 
+//! @SYMTestPriority        High
+//! @SYMTestStatus          Implemented
+//----------------------------------------------------------------------------------------------
+
+// Names of some test programs used for testing security
+_LIT(KRMDebugSecurityTrkDummyApp200159D8,"z:\\sys\\bin\\trkdummyapp200159D8.exe");
+
+void CTrkDummyAppTest::TestSecurityCheckPreventInsecureTrkDebugAgent200159D8(void)
+	{
+	test.Next(_L("TestSecurityCheckPreventInsecureTrkDebugAgent, SID 0x200159D8\n"));
+
+	RProcess process;
+	TInt err = process.Create(KRMDebugSecurityTrkDummyApp200159D8, KNullDesC, EOwnerProcess);
+	test (err == KErrNone);
+
+	// rendezvous with process
+	TRequestStatus status;
+	process.Rendezvous(status);
+
+	// obtain the secure ID for the process
+	TSecurityInfo secInfo(process);
+
+	static const TSecureId KTrkDummyAppSID2 = 0x200159D8;
+
+	test(secInfo.iSecureId.iId == KTrkDummyAppSID2);
+
+	// Kill the process, as we don't need it anymore
+	process.Kill(KErrNone);
+
+	process.Close();
+	}
+
+//----------------------------------------------------------------------------------------------
+//! @SYMTestCaseID      KBase-T-TRKDUMMYAPP-2397
+//! @SYMTestType        
+//! @SYMPREQ            PREQ1426
+//! @SYMTestCaseDesc    Tests that a known insecure debug agent trkapp.sis cannot be installed
+//!                     by ensuring the existence of a Symbian OS common app called trkdummyapp200170BC.exe
+//!                     already exists with the same Secure ID as the insecure app.
+//! @SYMTestActions     
+//!    
+//!     1.              Calls RProcess.Create() on z:\sys\bin\trkdummyapp200170BC.exe. Fail if unsuccessful.
+//!     
+//!     2.              Obtain the Secure ID of the process derived from z:\sys\bin\trkdummyapp200170BC.exe.
+//!
+//!     3.              Close the process derived from z:\sys\bin\trkdummyapp200170BC.exe.
+//!
+//! @SYMTestExpectedResults 
+//!
+//!     1.              Fails if unable to create a process from z:\sys\bin\trkdummyapp200170BC.exe.
+//!
+//!     2.              The Secure ID of trkdummyapp.exe has the Secure ID 0x200170BC. Fail otherwise.
+//! 
+//! @SYMTestPriority        High
+//! @SYMTestStatus          Implemented
+//----------------------------------------------------------------------------------------------
+
+// Names of some test programs used for testing security
+_LIT(KRMDebugSecurityTrkDummyApp200170BC,"z:\\sys\\bin\\trkdummyapp200170BC.exe");
+
+void CTrkDummyAppTest::TestSecurityCheckPreventInsecureTrkDebugAgent200170BC(void)
+	{
+
+	test.Next(_L("TestSecurityCheckPreventInsecureTrkDebugAgent, SID 0x200170BC\n"));
+
+	RProcess process;
+	TInt err = process.Create(KRMDebugSecurityTrkDummyApp200170BC, KNullDesC, EOwnerProcess);
+	test (err == KErrNone);
+
+	// rendezvous with process
+	TRequestStatus status;
+	process.Rendezvous(status);
+
+	// obtain the secure ID for the process
+	TSecurityInfo secInfo(process);
+
+	static const TSecureId KTrkDummyAppSID2 = 0x200170BC;
+
+	test(secInfo.iSecureId.iId == KTrkDummyAppSID2);
+
+	// Kill the process, as we don't need it anymore
+	process.Kill(KErrNone);
+
+	process.Close();
+	}
+
+void CTrkDummyAppTest::ClientAppL()
+//
+// Performs each test in turn
+//
+	{
+	test.Start(_L("ClientAppL"));
+
+	TestSecurityCheckPreventInsecureTrkDebugAgent();
+
+	TestSecurityCheckPreventInsecureTrkDebugAgent2();
+
+	TestSecurityCheckPreventInsecureTrkDebugAgent200159D8();
+
+	TestSecurityCheckPreventInsecureTrkDebugAgent200170BC();
+
+	test.End();
+	}
+
+
+
+GLDEF_C TInt E32Main()
+//
+// Entry point for run mode debug driver test
+//
+	{
+   TInt ret = KErrNone;
+
+	// client
+	CTrapCleanup* trap = CTrapCleanup::New();
+	if (!trap)
+		return KErrNoMemory;
+
+   	test.Title();
+   TrkDummyTest = CTrkDummyAppTest::NewL();
+   if (TrkDummyTest != NULL)
+       {
+        __UHEAP_MARK;
+	    TRAP(ret,TrkDummyTest->ClientAppL());
+	    __UHEAP_MARKEND;
+
+	    delete TrkDummyTest;
+       }
+       
+	delete trap;
+
+	return ret;
+	}
+
+// End of file - t_trkdummyapp.cpp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+