@@ -403,11 +403,26 @@ apr_status_t modsecurity_tx_init(modsec_rec *msr) {
403403 if (strcasecmp (te [i ].key , "Cookie" ) == 0 ) {
404404 if (msr -> txcfg -> cookie_format == COOKIES_V0 ) {
405405 _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 == ';' ) {
410408 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+ }
411426 } else {
412427 parse_cookies_v1 (msr , te [i ].val , msr -> request_cookies );
413428 }
0 commit comments