@@ -239,9 +239,9 @@ static void copy_rules_phase(apr_pool_t *mp,
239239
240240 /* Copy the rule. */
241241 * (msre_rule * * )apr_array_push (child_phase_arr ) = rule ;
242- if (rule -> actionset -> is_chained ) mode = 2 ;
242+ if (rule -> actionset && rule -> actionset -> is_chained ) mode = 2 ;
243243 } else {
244- if (rule -> actionset -> is_chained ) mode = 1 ;
244+ if (rule -> actionset && rule -> actionset -> is_chained ) mode = 1 ;
245245 }
246246 } else {
247247 if (mode == 2 ) {
@@ -897,8 +897,10 @@ static const char *add_rule(cmd_parms *cmd, directory_config *dcfg, int type,
897897 rule -> actionset , 1 );
898898
899899 /* Keep track of the parent action for "block" */
900- rule -> actionset -> parent_intercept_action_rec = dcfg -> tmp_default_actionset -> intercept_action_rec ;
901- rule -> actionset -> parent_intercept_action = dcfg -> tmp_default_actionset -> intercept_action ;
900+ if (rule -> actionset ) {
901+ rule -> actionset -> parent_intercept_action_rec = dcfg -> tmp_default_actionset -> intercept_action_rec ;
902+ rule -> actionset -> parent_intercept_action = dcfg -> tmp_default_actionset -> intercept_action ;
903+ }
902904
903905 /* Must NOT specify a disruptive action in logging phase. */
904906 if ((rule -> actionset != NULL )
@@ -913,7 +915,9 @@ static const char *add_rule(cmd_parms *cmd, directory_config *dcfg, int type,
913915
914916 if (dcfg -> tmp_chain_starter != NULL ) {
915917 rule -> chain_starter = dcfg -> tmp_chain_starter ;
916- rule -> actionset -> phase = rule -> chain_starter -> actionset -> phase ;
918+ if (rule -> actionset ) {
919+ rule -> actionset -> phase = rule -> chain_starter -> actionset -> phase ;
920+ }
917921 }
918922
919923 if (rule -> actionset -> is_chained != 1 ) {
0 commit comments