@@ -64,6 +64,7 @@ void *create_directory_config(apr_pool_t *mp, char *path)
6464
6565 dcfg -> cookie_format = NOT_SET ;
6666 dcfg -> argument_separator = NOT_SET ;
67+ dcfg -> cookiev0_separator = NOT_SET_P ;
6768
6869 dcfg -> rule_inheritance = NOT_SET ;
6970 dcfg -> rule_exceptions = apr_array_make (mp , 16 , sizeof (rule_exception * ));
@@ -366,6 +367,8 @@ void *merge_directory_configs(apr_pool_t *mp, void *_parent, void *_child)
366367 ? parent -> cookie_format : child -> cookie_format );
367368 merged -> argument_separator = (child -> argument_separator == NOT_SET
368369 ? parent -> argument_separator : child -> argument_separator );
370+ merged -> cookiev0_separator = (child -> cookiev0_separator == NOT_SET_P
371+ ? parent -> cookiev0_separator : child -> cookiev0_separator );
369372
370373
371374 /* rule inheritance */
@@ -627,6 +630,7 @@ void init_directory_config(directory_config *dcfg)
627630
628631 if (dcfg -> cookie_format == NOT_SET ) dcfg -> cookie_format = 0 ;
629632 if (dcfg -> argument_separator == NOT_SET ) dcfg -> argument_separator = '&' ;
633+ if (dcfg -> cookiev0_separator == NOT_SET_P ) dcfg -> cookiev0_separator = NULL ;
630634
631635 if (dcfg -> rule_inheritance == NOT_SET ) dcfg -> rule_inheritance = 1 ;
632636
@@ -1084,6 +1088,20 @@ static const char *cmd_marker(cmd_parms *cmd, void *_dcfg, const char *p1)
10841088 return add_marker (cmd , (directory_config * )_dcfg , SECMARKER_TARGETS , SECMARKER_ARGS , action );
10851089}
10861090
1091+ static const char * cmd_cookiev0_separator (cmd_parms * cmd , void * _dcfg ,
1092+ const char * p1 )
1093+ {
1094+ directory_config * dcfg = (directory_config * )_dcfg ;
1095+
1096+ if (strlen (p1 ) != 1 ) {
1097+ return apr_psprintf (cmd -> pool , "ModSecurity: Invalid cookie v0 separator: %s" , p1 );
1098+ }
1099+
1100+ dcfg -> cookiev0_separator = p1 ;
1101+
1102+ return NULL ;
1103+ }
1104+
10871105static const char * cmd_argument_separator (cmd_parms * cmd , void * _dcfg ,
10881106 const char * p1 )
10891107{
@@ -2785,6 +2803,14 @@ const command_rec module_directives[] = {
27852803 "character that will be used as separator when parsing application/x-www-form-urlencoded content."
27862804 ),
27872805
2806+ AP_INIT_TAKE1 (
2807+ "SecCookiev0Separator" ,
2808+ cmd_cookiev0_separator ,
2809+ NULL ,
2810+ CMD_SCOPE_ANY ,
2811+ "character that will be used as separator when parsing cookie v0 content."
2812+ ),
2813+
27882814 AP_INIT_TAKE1 (
27892815 "SecAuditEngine" ,
27902816 cmd_audit_engine ,
0 commit comments