Author: markt Date: Tue Aug 9 20:31:11 2016 New Revision: 1755646 URL: http://svn.apache.org/viewvc?rev=1755646&view=rev Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=59925 Correct regression in r1628368 and ensure that HTTP separators are handled as configured. Patch provided by Kyohei Nakamura.
Added: tomcat/trunk/test/org/apache/tomcat/util/http/TestLegacyCookieProcessor.java (with props) Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java Modified: tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java?rev=1755646&r1=1755645&r2=1755646&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/LegacyCookieProcessor.java Tue Aug 9 20:31:11 2016 @@ -515,7 +515,7 @@ public final class LegacyCookieProcessor break; default: if (version == 0 && - isV0Separator((char)bytes[pos]) && + !isV0Separator((char)bytes[pos]) && getAllowHttpSepsInV0() || !isHttpSeparator((char)bytes[pos]) || bytes[pos] == '=') { Added: tomcat/trunk/test/org/apache/tomcat/util/http/TestLegacyCookieProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/http/TestLegacyCookieProcessor.java?rev=1755646&view=auto ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/http/TestLegacyCookieProcessor.java (added) +++ tomcat/trunk/test/org/apache/tomcat/util/http/TestLegacyCookieProcessor.java Tue Aug 9 20:31:11 2016 @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tomcat.util.http; + +import java.nio.charset.StandardCharsets; + +import org.apache.tomcat.util.buf.MessageBytes; +import org.junit.Assert; +import org.junit.Test; + +public class TestLegacyCookieProcessor { + + /* + * https://bz.apache.org/bugzilla/show_bug.cgi?id=59925 + */ + @Test + public void testV0WithPath() { + LegacyCookieProcessor cp = new LegacyCookieProcessor(); + cp.setAllowHttpSepsInV0(true); + cp.setForwardSlashIsSeparator(true); + + MimeHeaders mimeHeaders = new MimeHeaders(); + ServerCookies serverCookies = new ServerCookies(4); + + MessageBytes cookieHeaderValue = mimeHeaders.addValue("Cookie"); + byte[] bytes = "$Version=0;cname=cvalue;$Path=/example".getBytes(StandardCharsets.UTF_8); + cookieHeaderValue.setBytes(bytes, 0, bytes.length); + cp.parseCookieHeader(mimeHeaders, serverCookies); + Assert.assertEquals(1, serverCookies.getCookieCount()); + for (int i = 0; i < 1; i++) { + ServerCookie actual = serverCookies.getCookie(i); + Assert.assertEquals(0, actual.getVersion()); + Assert.assertEquals("cname", actual.getName().toString()); + actual.getValue().getByteChunk().setCharset(StandardCharsets.UTF_8); + Assert.assertEquals("cvalue", + org.apache.tomcat.util.http.parser.Cookie.unescapeCookieValueRfc2109( + actual.getValue().toString())); + Assert.assertEquals("/example", actual.getPath().toString()); + } + } +} Propchange: tomcat/trunk/test/org/apache/tomcat/util/http/TestLegacyCookieProcessor.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org