152 }; |
152 }; |
153 |
153 |
154 //The function returns the argument number where the table name is. |
154 //The function returns the argument number where the table name is. |
155 inline TInt DbOp2TableNameArgIndex(TInt aDbOpType) |
155 inline TInt DbOp2TableNameArgIndex(TInt aDbOpType) |
156 { |
156 { |
157 __SQLASSERT(aDbOpType > 0 && aDbOpType <= SQLITE_FUNCTION, ESqlPanicInternalError); |
157 __ASSERT_DEBUG(aDbOpType > 0 && aDbOpType <= SQLITE_FUNCTION, __SQLPANIC2(ESqlPanicInternalError)); |
158 return KTableNameArgIndex[aDbOpType]; |
158 return KTableNameArgIndex[aDbOpType]; |
159 } |
159 } |
160 |
160 |
161 //The function returns the table name, which may be in aDbObjName1 or aDbObjName2, depending on aDbOpType value. |
161 //The function returns the table name, which may be in aDbObjName1 or aDbObjName2, depending on aDbOpType value. |
162 //The return value is "const char" pointer to a zero terminated string. |
162 //The return value is "const char" pointer to a zero terminated string. |
163 inline const char* DbOp2TableName(TInt aDbOpType, const char* aDbObjName1, const char* aDbObjName2) |
163 inline const char* DbOp2TableName(TInt aDbOpType, const char* aDbObjName1, const char* aDbObjName2) |
164 { |
164 { |
165 TInt pos = DbOp2TableNameArgIndex(aDbOpType); |
165 TInt pos = DbOp2TableNameArgIndex(aDbOpType); |
166 if(pos == 2) |
166 if(pos == 2) |
167 { |
167 { |
168 __SQLASSERT(aDbObjName2 != NULL, ESqlPanicInternalError); |
168 __ASSERT_DEBUG(aDbObjName2 != NULL, __SQLPANIC2(ESqlPanicInternalError)); |
169 return aDbObjName2; |
169 return aDbObjName2; |
170 } |
170 } |
171 else if(pos == 1) |
171 else if(pos == 1) |
172 { |
172 { |
173 __SQLASSERT(aDbObjName1 != NULL, ESqlPanicInternalError); |
173 __ASSERT_DEBUG(aDbObjName1 != NULL, __SQLPANIC2(ESqlPanicInternalError)); |
174 return aDbObjName1; |
174 return aDbObjName1; |
175 } |
175 } |
176 return NULL;//Some database operations do not use table name |
176 return NULL;//Some database operations do not use table name |
177 } |
177 } |
178 |
178 |
501 TInt CSqlSrvDatabase::AuthorizeCallback(void* aDb, TInt aDbOpType, |
501 TInt CSqlSrvDatabase::AuthorizeCallback(void* aDb, TInt aDbOpType, |
502 const char* aDbObjName1, const char* aDbObjName2, |
502 const char* aDbObjName1, const char* aDbObjName2, |
503 const char* aDbName, const char* aTrgOrViewName) |
503 const char* aDbName, const char* aTrgOrViewName) |
504 { |
504 { |
505 UNUSED_ARG(aTrgOrViewName); |
505 UNUSED_ARG(aTrgOrViewName); |
506 __SQLASSERT(aDb != NULL, ESqlPanicBadArgument); |
506 __ASSERT_DEBUG(aDb != NULL, __SQLPANIC2(ESqlPanicBadArgument)); |
507 |
507 |
508 #ifdef _NOTIFY |
508 #ifdef _SQL_AUTHORIZER_TRACE_ENABLED |
509 enum TDbOpType {EOpCreateIndex = 1, EOpCreateTable, EOpCreateTempIndex, EOpCreateTempTable, |
509 enum TDbOpType {EOpCreateIndex = 1, EOpCreateTable, EOpCreateTempIndex, EOpCreateTempTable, |
510 EOpCreateTempTrigger, EOpCreateTempView, EOpCreateTrigger, EOpCreateView, EOpDelete, EOpDropIndex, |
510 EOpCreateTempTrigger, EOpCreateTempView, EOpCreateTrigger, EOpCreateView, EOpDelete, EOpDropIndex, |
511 EOpDropTable, EOpDropTempIndex, EOpDropTempTable, EOpDropTempTrigger, EOpDropTempView, EOpDropTrigger, |
511 EOpDropTable, EOpDropTempIndex, EOpDropTempTable, EOpDropTempTrigger, EOpDropTempView, EOpDropTrigger, |
512 EOpDropView, EOpInsert, EOpPragma, EOpRead, EOpSelect, EOpTransaction, EOpUpdate, EOpAttach, EOpDettach, |
512 EOpDropView, EOpInsert, EOpPragma, EOpRead, EOpSelect, EOpTransaction, EOpUpdate, EOpAttach, EOpDettach, |
513 EOpAlterTable, EOpReindex, EOpAnalyze, EOpCreateVTable, EOpDropVTable, EOpFunctionCall}; |
513 EOpAlterTable, EOpReindex, EOpAnalyze, EOpCreateVTable, EOpDropVTable, EOpFunctionCall}; |
514 TDbOpType dbOpType = static_cast <TDbOpType> (aDbOpType);//can be seen now in the debugger |
514 TDbOpType dbOpType = static_cast <TDbOpType> (aDbOpType);//can be seen now in the debugger |
515 ::PrintAuthorizerArguments(dbOpType, aDbObjName1, aDbObjName2, aDbName, aTrgOrViewName); |
515 ::PrintAuthorizerArguments(dbOpType, aDbObjName1, aDbObjName2, aDbName, aTrgOrViewName); |
516 #endif//_NOTIFY |
516 #endif |
517 |
517 |
518 CSqlSrvDatabase& db = *static_cast <CSqlSrvDatabase*> (aDb); |
518 CSqlSrvDatabase& db = *static_cast <CSqlSrvDatabase*> (aDb); |
519 |
519 |
520 //1. If the authorizer is currently disabled - return SQLITE_OK. |
520 //1. If the authorizer is currently disabled - return SQLITE_OK. |
521 // (This happens when a database is attached/detached) |
521 // (This happens when a database is attached/detached) |