You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2023/01/18 18:24:15 UTC

[tomcat] 01/02: Refactor to retain original behaviour

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 3cdfd45e5049a23a0414ab53e5f7f952243e5018
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Jan 18 18:10:00 2023 +0000

    Refactor to retain original behaviour
    
    Setting an invalid encoding should still set the encoding name
---
 java/org/apache/coyote/Response.java               |  6 ++++--
 java/org/apache/tomcat/util/buf/CharsetHolder.java | 23 ++++++++++++----------
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/java/org/apache/coyote/Response.java b/java/org/apache/coyote/Response.java
index f5fb215c22..1c9008765b 100644
--- a/java/org/apache/coyote/Response.java
+++ b/java/org/apache/coyote/Response.java
@@ -502,7 +502,8 @@ public final class Response {
             return;
         }
 
-        charsetHolder = CharsetHolder.getValidatedInstance(characterEncoding);
+        charsetHolder = CharsetHolder.getInstance(characterEncoding);
+        charsetHolder.validate();
     }
 
 
@@ -562,8 +563,9 @@ public final class Response {
             this.contentType = m.toStringNoCharset();
             charsetValue = charsetValue.trim();
             if (charsetValue.length() > 0) {
+                charsetHolder = CharsetHolder.getInstance(charsetValue);
                 try {
-                    charsetHolder = CharsetHolder.getValidatedInstance(charsetValue);
+                    charsetHolder.validate();
                 } catch (UnsupportedEncodingException e) {
                     log.warn(sm.getString("response.encoding.invalid", charsetValue), e);
                 }
diff --git a/java/org/apache/tomcat/util/buf/CharsetHolder.java b/java/org/apache/tomcat/util/buf/CharsetHolder.java
index da0f912565..953925ce13 100755
--- a/java/org/apache/tomcat/util/buf/CharsetHolder.java
+++ b/java/org/apache/tomcat/util/buf/CharsetHolder.java
@@ -51,15 +51,6 @@ public class CharsetHolder {
     }
 
 
-    public static CharsetHolder getValidatedInstance(String name) throws UnsupportedEncodingException {
-        if (name == null) {
-            return EMPTY;
-        }
-
-        return new CharsetHolder(name, B2CConverter.getCharset(name));
-    }
-
-
     public static CharsetHolder getInstance(Charset encoding) {
         if (encoding == null) {
             return EMPTY;
@@ -105,9 +96,21 @@ public class CharsetHolder {
      *     name of a Charset that the JRE does not recognise
      */
     public Charset getValidatedCharset() throws UnsupportedEncodingException {
+        validate();
+        return charset;
+    }
+
+
+    /**
+     * Throws an exception if the instance holds a name that without a matching
+     * Charset.
+     *
+     * @throws UnsupportedEncodingException if the holder contains a name
+     *     without a matching Charset
+     */
+    public void validate() throws UnsupportedEncodingException {
         if (name != null && charset == null) {
             throw new UnsupportedEncodingException(name);
         }
-        return charset;
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org