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 <b...@netzgut.net>
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);
 

Reply via email to