persistentstorage/sql/SRC/Security/SqlSecurity.cpp
branchRCL_3
changeset 23 26645d81f48d
parent 15 fcc16690f446
child 24 cc28652e0254
equal deleted inserted replaced
21:28839de615b4 23:26645d81f48d
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 //
    14 //
    15 
    15 
    16 #include "SqlSecurityImpl.h"
    16 #include "SqlSecurityImpl.h"
    17 #include "SqlPanic.h"
    17 #include "SqlAssert.h"
    18 #include "UTraceSql.h"
    18 #include "OstTraceDefinitions.h"
       
    19 #ifdef OST_TRACE_COMPILER_IN_USE
       
    20 #include "SqlSecurityTraces.h"
       
    21 #endif
       
    22 #include "SqlTraceDef.h"
    19 
    23 
    20 const TInt32 KEndOfSPStream = -1;//If found in the stream, given as an argument to RSqlSecurityPolicy::InternalizeL(),
    24 const TInt32 KEndOfSPStream = -1;//If found in the stream, given as an argument to RSqlSecurityPolicy::InternalizeL(),
    21 							     //then there are no more policies in the stream.
    25 							     //then there are no more policies in the stream.
    22 
    26 
    23 /**
    27 /**
    44 
    48 
    45 @capability None
    49 @capability None
    46 */
    50 */
    47 EXPORT_C TInt RSqlSecurityPolicy::Create(const TSecurityPolicy& aDefaultPolicy)
    51 EXPORT_C TInt RSqlSecurityPolicy::Create(const TSecurityPolicy& aDefaultPolicy)
    48 	{
    52 	{
    49 	SQLUTRACE_PROFILER(this);
    53 	SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLSECURITYPOLICY_CREATE_ENTRY , "Entry;0x%X;RSqlSecurityPolicy::Create;aDefaultPolicy=0x%X", (TUint)this, (TUint)&aDefaultPolicy));
    50 	TRAPD(err, CreateL(aDefaultPolicy));
    54 	TRAPD(err, CreateL(aDefaultPolicy));
       
    55     SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLSECURITYPOLICY_CREATE_EXIT, "Exit;0x%X;RSqlSecurityPolicy::Create;iImpl=0x%X;err=%d", (TUint)this, (TUint)iImpl, err));
    51 	return err;
    56 	return err;
    52 	}
    57 	}
    53 
    58 
    54 /**
    59 /**
    55 Initializes RSqlSecurityPolicy instance.
    60 Initializes RSqlSecurityPolicy instance.
    64 
    69 
    65 @capability None
    70 @capability None
    66 */
    71 */
    67 EXPORT_C void RSqlSecurityPolicy::CreateL(const TSecurityPolicy& aDefaultPolicy)
    72 EXPORT_C void RSqlSecurityPolicy::CreateL(const TSecurityPolicy& aDefaultPolicy)
    68 	{
    73 	{
    69 	SQLUTRACE_PROFILER(this);
    74     SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLSECURITYPOLICY_CREATEL_ENTRY , "Entry;0x%X;RSqlSecurityPolicy::CreateL;aDefaultPolicy=0x%X", (TUint)this, (TUint)&aDefaultPolicy));
    70 	iImpl = CSqlSecurityPolicy::NewL(aDefaultPolicy);
    75 	iImpl = CSqlSecurityPolicy::NewL(aDefaultPolicy);
       
    76     SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLSECURITYPOLICY_CREATEL_EXIT, "Exit;0x%X;RSqlSecurityPolicy::CreateL;iImpl=0x%X", (TUint)this, (TUint)iImpl));
    71 	}
    77 	}
    72 
    78 
    73 /**
    79 /**
    74 Frees the allocated by RSqlSecurityPolicy instance memory and other resources.
    80 Frees the allocated by RSqlSecurityPolicy instance memory and other resources.
    75 
    81 
    76 @capability None
    82 @capability None
    77 */
    83 */
    78 EXPORT_C void RSqlSecurityPolicy::Close()
    84 EXPORT_C void RSqlSecurityPolicy::Close()
    79 	{
    85 	{
    80 	SQLUTRACE_PROFILER(this);
    86     SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLSECURITYPOLICY_CLOSE_ENTRY , "Entry;0x%X;RSqlSecurityPolicy::Close", (TUint)this));
    81 	delete iImpl;
    87 	delete iImpl;
       
    88     SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLSECURITYPOLICY_CLOSE_EXIT, "Exit;0x%X;RSqlSecurityPolicy::Close;iImpl=0x%X", (TUint)this, (TUint)iImpl));
    82 	iImpl = NULL;
    89 	iImpl = NULL;
    83 	}
    90 	}
    84 
    91 
    85 
    92 
    86 /**
    93 /**
   101 
   108 
   102 @capability None
   109 @capability None
   103 */
   110 */
   104 EXPORT_C TInt RSqlSecurityPolicy::SetDbPolicy(TPolicyType aPolicyType, const TSecurityPolicy& aPolicy)
   111 EXPORT_C TInt RSqlSecurityPolicy::SetDbPolicy(TPolicyType aPolicyType, const TSecurityPolicy& aPolicy)
   105 	{
   112 	{
   106 	SQLUTRACE_PROFILER(this);
   113 	__ASSERT_ALWAYS(aPolicyType >= ESchemaPolicy && aPolicyType <= EWritePolicy, __SQLPANIC(ESqlPanicBadArgument));
   107 	__SQLASSERT_ALWAYS(aPolicyType >= ESchemaPolicy && aPolicyType <= EWritePolicy, ESqlPanicBadArgument);
       
   108 	Impl().SetDbPolicy(aPolicyType, aPolicy);
   114 	Impl().SetDbPolicy(aPolicyType, aPolicy);
   109 	return KErrNone;
   115 	return KErrNone;
   110 	}
   116 	}
   111 	
   117 	
   112 /**
   118 /**
   138 @capability None
   144 @capability None
   139 */
   145 */
   140 EXPORT_C TInt RSqlSecurityPolicy::SetPolicy(TObjectType aObjectType, const TDesC& aObjectName, 
   146 EXPORT_C TInt RSqlSecurityPolicy::SetPolicy(TObjectType aObjectType, const TDesC& aObjectName, 
   141 									  TPolicyType aPolicyType, const TSecurityPolicy& aPolicy)
   147 									  TPolicyType aPolicyType, const TSecurityPolicy& aPolicy)
   142 	{
   148 	{
   143 	SQLUTRACE_PROFILER(this);
   149 	__ASSERT_ALWAYS(aObjectType == ETable, __SQLPANIC(ESqlPanicBadArgument));
   144 	__SQLASSERT_ALWAYS(aObjectType == ETable, ESqlPanicBadArgument);
   150 	__ASSERT_ALWAYS(aObjectName.Length() > 0, __SQLPANIC(ESqlPanicBadArgument));
   145 	__SQLASSERT_ALWAYS(aObjectName.Length() > 0, ESqlPanicBadArgument);
   151 	__ASSERT_ALWAYS(aPolicyType >= EReadPolicy && aPolicyType <= EWritePolicy, __SQLPANIC(ESqlPanicBadArgument));
   146 	__SQLASSERT_ALWAYS(aPolicyType >= EReadPolicy && aPolicyType <= EWritePolicy, ESqlPanicBadArgument);
       
   147 	return Impl().SetPolicy(aObjectType, aObjectName, aPolicyType, aPolicy);
   152 	return Impl().SetPolicy(aObjectType, aObjectName, aPolicyType, aPolicy);
   148 	}
   153 	}
   149 
   154 
   150 /**
   155 /**
   151 Gets the default database security policy.
   156 Gets the default database security policy.
   156 
   161 
   157 @capability None
   162 @capability None
   158 */	
   163 */	
   159 EXPORT_C TSecurityPolicy RSqlSecurityPolicy::DefaultPolicy() const
   164 EXPORT_C TSecurityPolicy RSqlSecurityPolicy::DefaultPolicy() const
   160 	{
   165 	{
   161 	SQLUTRACE_PROFILER(this);
       
   162 	return Impl().DefaultPolicy();
   166 	return Impl().DefaultPolicy();
   163 	}
   167 	}
   164 
   168 
   165 /**
   169 /**
   166 Gets a database security policy of the specified type.
   170 Gets a database security policy of the specified type.
   177 
   181 
   178 @capability None
   182 @capability None
   179 */	
   183 */	
   180 EXPORT_C TSecurityPolicy RSqlSecurityPolicy::DbPolicy(TPolicyType aPolicyType) const
   184 EXPORT_C TSecurityPolicy RSqlSecurityPolicy::DbPolicy(TPolicyType aPolicyType) const
   181 	{
   185 	{
   182 	SQLUTRACE_PROFILER(this);
   186 	__ASSERT_ALWAYS(aPolicyType >= ESchemaPolicy && aPolicyType <= EWritePolicy, __SQLPANIC(ESqlPanicBadArgument));
   183 	__SQLASSERT_ALWAYS(aPolicyType >= ESchemaPolicy && aPolicyType <= EWritePolicy, ESqlPanicBadArgument);
       
   184 	return Impl().DbPolicy(aPolicyType);
   187 	return Impl().DbPolicy(aPolicyType);
   185 	}
   188 	}
   186 	
   189 	
   187 /**
   190 /**
   188 Gets a database object security policy of the specified type.
   191 Gets a database object security policy of the specified type.
   207 @capability None
   210 @capability None
   208 */
   211 */
   209 EXPORT_C TSecurityPolicy RSqlSecurityPolicy::Policy(TObjectType aObjectType, const TDesC& aObjectName, 
   212 EXPORT_C TSecurityPolicy RSqlSecurityPolicy::Policy(TObjectType aObjectType, const TDesC& aObjectName, 
   210 												 TPolicyType aPolicyType) const
   213 												 TPolicyType aPolicyType) const
   211 	{
   214 	{
   212 	SQLUTRACE_PROFILER(this);
   215 	__ASSERT_ALWAYS(aObjectType == ETable, __SQLPANIC(ESqlPanicBadArgument));
   213 	__SQLASSERT_ALWAYS(aObjectType == ETable, ESqlPanicBadArgument);
   216 	__ASSERT_ALWAYS(aObjectName.Length() > 0, __SQLPANIC(ESqlPanicBadArgument));
   214 	__SQLASSERT_ALWAYS(aObjectName.Length() > 0, ESqlPanicBadArgument);
   217 	__ASSERT_ALWAYS(aPolicyType >= EReadPolicy && aPolicyType <= EWritePolicy, __SQLPANIC(ESqlPanicBadArgument));
   215 	__SQLASSERT_ALWAYS(aPolicyType >= EReadPolicy && aPolicyType <= EWritePolicy, ESqlPanicBadArgument);
       
   216 	return Impl().Policy(aObjectType, aObjectName, aPolicyType);
   218 	return Impl().Policy(aObjectType, aObjectName, aPolicyType);
   217 	}
   219 	}
   218 
   220 
   219 /**
   221 /**
   220 Externalizes RSqlSecurityPolicy instance to a write stream.
   222 Externalizes RSqlSecurityPolicy instance to a write stream.
   225 
   227 
   226 @capability None
   228 @capability None
   227 */
   229 */
   228 EXPORT_C void RSqlSecurityPolicy::ExternalizeL(RWriteStream& aStream) const
   230 EXPORT_C void RSqlSecurityPolicy::ExternalizeL(RWriteStream& aStream) const
   229 	{
   231 	{
   230 	SQLUTRACE_PROFILER(this);
   232     SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLSECURITYPOLICY_EXTERNALIZEL_ENTRY , "Entry;0x%X;RSqlSecurityPolicy::ExternalizeL;aStream=0x%X;aStream.Sink()=0x%X", (TUint)this, (TUint)&aStream, (TUint)aStream.Sink()));
   231 	RSqlSecurityPolicy::TObjectType objectType;
   233 	RSqlSecurityPolicy::TObjectType objectType;
   232 	TPtrC objectName;
   234 	TPtrC objectName;
   233 	RSqlSecurityPolicy::TPolicyType policyType;
   235 	RSqlSecurityPolicy::TPolicyType policyType;
   234 	TSecurityPolicy policy;
   236 	TSecurityPolicy policy;
   235 	//Default policy
   237 	//Default policy
   251 		aStream << static_cast <TInt32> (policyType);
   253 		aStream << static_cast <TInt32> (policyType);
   252 		aStream << policy.Package();
   254 		aStream << policy.Package();
   253 		}
   255 		}
   254 	//Object policy stream - end
   256 	//Object policy stream - end
   255 	aStream << KEndOfSPStream;
   257 	aStream << KEndOfSPStream;
       
   258     SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLSECURITYPOLICY_EXTERNALIZEL_EXIT, "Exit;0x%X;RSqlSecurityPolicy::ExternalizeL", (TUint)this));
   256 	}
   259 	}
   257 	
   260 	
   258 /**
   261 /**
   259 Initializes RSqlSecurityPolicy instance from a stream.
   262 Initializes RSqlSecurityPolicy instance from a stream.
   260 In case of an error the original security policy data is preserved.
   263 In case of an error the original security policy data is preserved.
   266 
   269 
   267 @capability None
   270 @capability None
   268 */
   271 */
   269 EXPORT_C void RSqlSecurityPolicy::InternalizeL(RReadStream& aStream)
   272 EXPORT_C void RSqlSecurityPolicy::InternalizeL(RReadStream& aStream)
   270 	{
   273 	{
   271 	SQLUTRACE_PROFILER(this);
   274     SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLSECURITYPOLICY_INTERNALIZEL_ENTRY , "Entry;0x%X;RSqlSecurityPolicy::InternalizeL;aStream=0x%X;aStream.Source()=0x%X", (TUint)this, (TUint)&aStream, (TUint)aStream.Source()));
   272 	TSecurityPolicy policy;
   275 	TSecurityPolicy policy;
   273 	TBuf8<sizeof(TSecurityPolicy)> policyBuf;
   276 	TBuf8<sizeof(TSecurityPolicy)> policyBuf;
   274 	//Default policy
   277 	//Default policy
   275 	aStream >> policyBuf;
   278 	aStream >> policyBuf;
   276 	policy.Set(policyBuf);
   279 	policy.Set(policyBuf);
   309 	CSqlSecurityPolicy* temp = newPolicy.iImpl;
   312 	CSqlSecurityPolicy* temp = newPolicy.iImpl;
   310 	newPolicy.iImpl = iImpl;
   313 	newPolicy.iImpl = iImpl;
   311 	iImpl = temp;
   314 	iImpl = temp;
   312 	//Destroy the old policy (which was swapped)
   315 	//Destroy the old policy (which was swapped)
   313 	CleanupStack::PopAndDestroy(&newPolicy);
   316 	CleanupStack::PopAndDestroy(&newPolicy);
       
   317     SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLSECURITYPOLICY_INTERNALIZEL_EXIT, "Exit;0x%X;RSqlSecurityPolicy::InternalizeL", (TUint)this));
   314 	}
   318 	}
   315 
   319 
   316 /**
   320 /**
   317 Destroys the existing iImpl object and replaces it with aImpl parameter.
   321 Destroys the existing iImpl object and replaces it with aImpl parameter.
   318 
   322 
   331 
   335 
   332 @internalComponent
   336 @internalComponent
   333 */
   337 */
   334 CSqlSecurityPolicy& RSqlSecurityPolicy::Impl() const
   338 CSqlSecurityPolicy& RSqlSecurityPolicy::Impl() const
   335 	{
   339 	{
   336 	__SQLASSERT_ALWAYS(iImpl != NULL, ESqlPanicInvalidObj);
   340 	__ASSERT_ALWAYS(iImpl != NULL, __SQLPANIC(ESqlPanicInvalidObj));
   337 	return *iImpl;	
   341 	return *iImpl;	
   338 	}
   342 	}