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