This is an automated email from the ASF dual-hosted git repository.
benw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git
The following commit(s) were added to refs/heads/master by this push:
new 2c61207ce TAP5-2768: DefaultRequestExceptionHandler doesn't leak error
msg if prod
2c61207ce is described below
commit 2c61207ce41150b16cb4dd4ca96efd06c60cf1e9
Author: Ben Weidig <[email protected]>
AuthorDate: Thu Nov 9 08:52:49 2023 +0100
TAP5-2768: DefaultRequestExceptionHandler doesn't leak error msg if prod
---
.../services/DefaultRequestExceptionHandler.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
index dc823ac59..497b94bd4 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
@@ -266,13 +266,21 @@ public class DefaultRequestExceptionHandler implements
RequestExceptionHandler
response.setStatus(statusCode);
- String rawMessage = ExceptionUtils.toMessage(exception);
+ // TAP5-2768: Don't leak Exception details to client in production mode
+ String headerValue = null;
+ if (productionMode)
+ {
+ headerValue = "An error occurred.";
+ } else
+ {
+ String rawMessage = ExceptionUtils.toMessage(exception);
- // Encode it compatibly with the JavaScript escape() function.
+ // Encode it compatibly with the JavaScript escape() function.
- String encoded = URLEncoder.encode(rawMessage, "UTF-8").replace("+",
"%20");
+ headerValue = URLEncoder.encode(rawMessage, "UTF-8").replace("+",
"%20");
+ }
- response.setHeader("X-Tapestry-ErrorMessage", encoded);
+ response.setHeader("X-Tapestry-ErrorMessage", headerValue);
Page page = pageCache.get(pageName);