@@ -403,11 +403,26 @@ apr_status_t modsecurity_tx_init(modsec_rec *msr) {
403
403
if (strcasecmp (te [i ].key , "Cookie" ) == 0 ) {
404
404
if (msr -> txcfg -> cookie_format == COOKIES_V0 ) {
405
405
_cookies = apr_pstrdup (msr -> mp , te [i ].val );
406
- while ((* _cookies != 0 )&& (* _cookies != ',' )&& (* _cookies != ';' )) _cookies ++ ;
407
- if (* _cookies == ',' )
408
- parse_cookies_v0 (msr , te [i ].val , msr -> request_cookies , "," );
409
- else
406
+ while ((* _cookies != 0 )&& (* _cookies != ';' )) _cookies ++ ;
407
+ if (* _cookies == ';' ) {
410
408
parse_cookies_v0 (msr , te [i ].val , msr -> request_cookies , ";" );
409
+ } else {
410
+ _cookies = apr_pstrdup (msr -> mp , te [i ].val );
411
+ while ((* _cookies != 0 )&& (* _cookies != ',' )) _cookies ++ ;
412
+ if (* _cookies == ',' ) {
413
+ _cookies ++ ;
414
+ if (* _cookies == 0x20 ) {// looks like comma is the separator
415
+ if (msr -> txcfg -> debuglog_level >= 5 ) {
416
+ msr_log (msr , 5 , "Cookie v0 parser: Using comma as a separator. Semi-colon was not identified!" );
417
+ }
418
+ parse_cookies_v0 (msr , te [i ].val , msr -> request_cookies , "," );
419
+ } else {
420
+ parse_cookies_v0 (msr , te [i ].val , msr -> request_cookies , ";" );
421
+ }
422
+ } else {
423
+ parse_cookies_v0 (msr , te [i ].val , msr -> request_cookies , ";" );
424
+ }
425
+ }
411
426
} else {
412
427
parse_cookies_v1 (msr , te [i ].val , msr -> request_cookies );
413
428
}
0 commit comments