equal
deleted
inserted
replaced
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 } |