@@ -203,6 +203,7 @@ char *msre_ruleset_phase_rule_update_target_matching_exception(modsec_rec *msr,
203203 const char * p3 )
204204{
205205 assert (ruleset != NULL );
206+ assert (phase_arr != NULL );
206207 msre_rule * * rules ;
207208 int i , j , mode ;
208209 char * err ;
@@ -212,7 +213,10 @@ char *msre_ruleset_phase_rule_update_target_matching_exception(modsec_rec *msr,
212213 rules = (msre_rule * * )phase_arr -> elts ;
213214 for (i = 0 ; i < phase_arr -> nelts ; i ++ ) {
214215 msre_rule * rule = (msre_rule * )rules [i ];
216+ assert (rule != NULL );
217+
215218 if (mode == 0 ) { /* Looking for next rule. */
219+ assert (rule -> actionset != NULL );
216220 if (msre_ruleset_rule_matches_exception (rule , re )) {
217221 err = update_rule_target_ex (msr , ruleset , rule , p2 , p3 );
218222 if (err ) return err ;
@@ -527,10 +531,12 @@ char *update_rule_target_ex(modsec_rec *msr, msre_ruleset *ruleset, msre_rule *r
527531}
528532
529533int msre_ruleset_rule_matches_exception (msre_rule * rule , rule_exception * re ) {
534+ assert (rule != NULL );
530535 int match = 0 ;
531536
532537 /* Only remove non-placeholder rules */
533538 if (rule -> placeholder == RULE_PH_NONE ) {
539+ assert (re != NULL );
534540 switch (re -> type ) {
535541 case RULE_EXCEPTION_REMOVE_ID :
536542 if ((rule -> actionset != NULL )&& (rule -> actionset -> id != NULL )) {
@@ -1468,6 +1474,7 @@ apr_status_t msre_ruleset_process_phase(msre_ruleset *ruleset, modsec_rec *msr)
14681474 rules = (msre_rule * * )arr -> elts ;
14691475 for (i = 0 ; i < arr -> nelts ; i ++ ) {
14701476 msre_rule * rule = rules [i ];
1477+ assert (rule != NULL );
14711478 rule -> execution_time = 0 ;
14721479 }
14731480
@@ -1480,6 +1487,7 @@ apr_status_t msre_ruleset_process_phase(msre_ruleset *ruleset, modsec_rec *msr)
14801487 rules = (msre_rule * * )arr -> elts ;
14811488 for (i = 0 ; i < arr -> nelts ; i ++ ) {
14821489 msre_rule * rule = rules [i ];
1490+ assert (rule != NULL );
14831491
14841492 /* Ignore markers, which are never processed. */
14851493 if (rule -> placeholder == RULE_PH_MARKER ) continue ;
@@ -1498,6 +1506,8 @@ static apr_status_t msre_ruleset_process_phase_(msre_ruleset *ruleset, modsec_re
14981506#else
14991507 apr_status_t msre_ruleset_process_phase (msre_ruleset * ruleset , modsec_rec * msr ) {
15001508#endif
1509+ assert (ruleset != NULL );
1510+ assert (msr != NULL );
15011511 apr_array_header_t * arr = NULL ;
15021512 msre_rule * * rules ;
15031513 apr_status_t rc ;
@@ -1542,10 +1552,11 @@ static apr_status_t msre_ruleset_process_phase_(msre_ruleset *ruleset, modsec_re
15421552 rules = (msre_rule * * )arr -> elts ;
15431553 for (i = 0 ; i < arr -> nelts ; i ++ ) {
15441554 msre_rule * rule = rules [i ];
1555+ assert (rule != NULL );
1556+ assert (rule -> actionset != NULL );
15451557#if defined(PERFORMANCE_MEASUREMENT )
15461558 apr_time_t time1 = 0 ;
15471559#endif
1548- assert (rule -> actionset != NULL );
15491560
15501561 /* Reset the rule interception flag */
15511562 msr -> rule_was_intercepted = 0 ;
@@ -1974,6 +1985,9 @@ msre_ruleset *msre_ruleset_create(msre_engine *engine, apr_pool_t *mp) {
19741985 * Adds one rule to the given phase of the ruleset.
19751986 */
19761987int msre_ruleset_rule_add (msre_ruleset * ruleset , msre_rule * rule , int phase ) {
1988+ assert (ruleset != NULL );
1989+ assert (rule != NULL );
1990+ assert (rule -> actionset != NULL );
19771991 apr_array_header_t * arr = NULL ;
19781992
19791993 switch (phase ) {
@@ -2011,6 +2025,8 @@ int msre_ruleset_rule_add(msre_ruleset *ruleset, msre_rule *rule, int phase) {
20112025static msre_rule * msre_ruleset_fetch_phase_rule (const msre_ruleset * ruleset , const char * id ,
20122026 const apr_array_header_t * phase_arr , int offset )
20132027{
2028+ assert (id != NULL );
2029+ assert (phase_arr != NULL );
20142030 msre_rule * * rules = (msre_rule * * )phase_arr -> elts ;
20152031 int i ;
20162032
@@ -2067,6 +2083,7 @@ msre_rule * msre_ruleset_fetch_rule(msre_ruleset *ruleset, const char *id, int o
20672083static int msre_ruleset_phase_rule_remove_with_exception (msre_ruleset * ruleset , rule_exception * re ,
20682084 apr_array_header_t * phase_arr )
20692085{
2086+ assert (phase_arr != NULL );
20702087 msre_rule * * rules ;
20712088 int i , j , mode , removed_count ;
20722089
@@ -2084,6 +2101,7 @@ static int msre_ruleset_phase_rule_remove_with_exception(msre_ruleset *ruleset,
20842101
20852102 /* Only remove non-placeholder rules */
20862103 if (rule -> placeholder == RULE_PH_NONE ) {
2104+ assert (re != NULL );
20872105 switch (re -> type ) {
20882106 case RULE_EXCEPTION_REMOVE_ID :
20892107 if (rule -> actionset -> id != NULL ) {
@@ -2304,6 +2322,7 @@ char *msre_format_metadata(modsec_rec *msr, msre_actionset *actionset) {
23042322char * msre_rule_generate_unparsed (apr_pool_t * pool , const msre_rule * rule , const char * targets ,
23052323 const char * args , const char * actions )
23062324{
2325+ assert (rule != NULL );
23072326 char * unparsed = NULL ;
23082327 const char * r_targets = targets ;
23092328 const char * r_args = args ;
@@ -2363,12 +2382,19 @@ msre_rule *msre_rule_create(msre_ruleset *ruleset, int type,
23632382 const char * fn , int line , const char * targets ,
23642383 const char * args , const char * actions , char * * error_msg )
23652384{
2385+ assert (ruleset != NULL );
2386+ assert (args != NULL );
2387+ assert (error_msg != NULL );
2388+ // Normally useless code, left to be safe for the moment
2389+ if (error_msg == NULL ) {
2390+ ap_log_perror (APLOG_MARK , APLOG_EMERG , 0 , ruleset -> mp , NULL , "msre_rule_create: error_msg is NULL" );
2391+ return NULL ;
2392+ }
23662393 msre_rule * rule ;
23672394 char * my_error_msg ;
23682395 const char * argsp ;
23692396 int rc ;
23702397
2371- if (error_msg == NULL ) return NULL ;
23722398 * error_msg = NULL ;
23732399
23742400 rule = (msre_rule * )apr_pcalloc (ruleset -> mp , sizeof (msre_rule ));
@@ -2521,6 +2547,8 @@ static void msre_perform_disruptive_actions(modsec_rec *msr, msre_rule *rule,
25212547{
25222548 assert (msr != NULL );
25232549 assert (actionset != NULL );
2550+ assert (actionset -> intercept_action_rec != NULL );
2551+ assert (actionset -> intercept_action_rec -> metadata != NULL );
25242552 const apr_array_header_t * tarr ;
25252553 const apr_table_entry_t * telts ;
25262554 int i ;
@@ -2534,6 +2562,7 @@ static void msre_perform_disruptive_actions(modsec_rec *msr, msre_rule *rule,
25342562 telts = (const apr_table_entry_t * )tarr -> elts ;
25352563 for (i = 0 ; i < tarr -> nelts ; i ++ ) {
25362564 msre_action * action = (msre_action * )telts [i ].val ;
2565+ assert (action -> metadata != NULL );
25372566 if (action -> metadata -> type == ACTION_DISRUPTIVE ) {
25382567 if (action -> metadata -> execute != NULL ) {
25392568 action -> metadata -> execute (msr , mptmp , rule , action );
@@ -2797,6 +2826,11 @@ static int execute_operator(msre_var *var, msre_rule *rule, modsec_rec *msr,
27972826 * Executes rule against the given transaction.
27982827 */
27992828static apr_status_t msre_rule_process_normal (msre_rule * rule , modsec_rec * msr ) {
2829+ assert (rule != NULL );
2830+ assert (rule -> actionset != NULL );
2831+ assert (rule -> targets != NULL );
2832+ assert (msr != NULL );
2833+ assert (msr -> txcfg != NULL );
28002834 const apr_array_header_t * arr = NULL ;
28012835 const apr_table_entry_t * te = NULL ;
28022836 msre_actionset * acting_actionset = NULL ;
@@ -3343,6 +3377,8 @@ static apr_status_t msre_rule_process_normal(msre_rule *rule, modsec_rec *msr) {
33433377 *
33443378 */
33453379static apr_status_t msre_rule_process_lua (msre_rule * rule , modsec_rec * msr ) {
3380+ assert (rule != NULL );
3381+ assert (msr != NULL );
33463382 msre_actionset * acting_actionset = NULL ;
33473383 char * my_error_msg = NULL ;
33483384 int rc ;
@@ -3380,6 +3416,7 @@ static apr_status_t msre_rule_process_lua(msre_rule *rule, modsec_rec *msr) {
33803416 *
33813417 */
33823418static apr_status_t msre_rule_process (msre_rule * rule , modsec_rec * msr ) {
3419+ assert (msr != NULL );
33833420 /* Use a fresh memory sub-pool for processing each rule */
33843421 if (msr -> msc_rule_mptmp == NULL ) {
33853422 if (apr_pool_create (& msr -> msc_rule_mptmp , msr -> mp ) != APR_SUCCESS ) {
0 commit comments