public static string ProcessSqlForRegExReplacement(DbConnection dbConnection, SqlCommand sqlCmd, string sqlCommand, CommandType commandType)
        {
            try
            {
                if (!RegExInjectionEnabled || !SqlCommandInterceptor.Enabled || dbConnection == null || sqlCommand.EndsWith(RegReplacementIndicator))
                {
                    return(sqlCommand);
                }
                var sql = _sqlRewriteRules.ExecuteReadLocked(sqlRewriteRules =>
                {
                    foreach (var regEx in sqlRewriteRules)
                    {
                        if (!regEx.MatchDatabase(dbConnection.Database))
                        {
                            continue;
                        }
                        var newCommand = regEx.ProcessQuery(sqlCommand);
                        if (newCommand.EndsWith(RegReplacementIndicator) || newCommand != sqlCommand)
                        {
                            return(newCommand);
                        }
                    }

                    return(sqlCommand);
                });

                return(sql);
            }
            catch (Exception e)
            {
                SqlCommandInterceptor.OnExceptionDelegateEvent(e);
                return(sqlCommand);
            }
        }
Example #2
0
        public void TestExecuteReadLockedFunction()
        {
            var accessor = new ConcurrentObjectAccessor <TestClass>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            var retVal = accessor.ExecuteReadLocked(obj => obj.Name);

            Assert.AreEqual("Hello", retVal);
        }
Example #3
0
        public void TestExecuteReadLockedProcedure()
        {
            var accessor = new ConcurrentObjectAccessor <TestClass>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            string retVal = "";

            accessor.ExecuteReadLocked(obj =>
            {
                retVal = obj.Name;
            });
            Assert.AreEqual("Hello", retVal);
        }