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

cziegeler pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-engine.git


The following commit(s) were added to refs/heads/master by this push:
     new 3780cd8  fix: handle IOException internally and fix session ID lookup 
(#77)
3780cd8 is described below

commit 3780cd850ad832eae04fc0e40f7f7fd2a5a9faa7
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Tue Jun 2 16:36:58 2026 +0200

    fix: handle IOException internally and fix session ID lookup (#77)
    
    - SlingServletRequestAdapter: get session ID via getSession(false) instead
      of delegating to getRequestedSessionId() to avoid cross-context issues
    - RequestHistoryConsolePlugin: remove checked IOException/ServletException
      from doGet/doPost signatures; catch and log IOExceptions internally
    - Escape `key` with ResponseUtil.escapeXml in the table header to prevent
      potential XSS
    - Remove unused ServletException import
    
    Co-authored-by: Maia <maia@noreply>
---
 .../impl/adapter/SlingServletRequestAdapter.java   |   3 +-
 .../impl/console/RequestHistoryConsolePlugin.java  | 110 +++++++++++----------
 2 files changed, 61 insertions(+), 52 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/engine/impl/adapter/SlingServletRequestAdapter.java
 
b/src/main/java/org/apache/sling/engine/impl/adapter/SlingServletRequestAdapter.java
index 6f85e3a..1f3a52c 100644
--- 
a/src/main/java/org/apache/sling/engine/impl/adapter/SlingServletRequestAdapter.java
+++ 
b/src/main/java/org/apache/sling/engine/impl/adapter/SlingServletRequestAdapter.java
@@ -150,7 +150,8 @@ public class SlingServletRequestAdapter extends 
SlingJakartaHttpServletRequestWr
 
     @Override
     public String getRequestedSessionId() {
-        return request.getRequestedSessionId();
+        final HttpSession session = request.getSession(false);
+        return session != null ? session.getId() : null;
     }
 
     @Override
diff --git 
a/src/main/java/org/apache/sling/engine/impl/console/RequestHistoryConsolePlugin.java
 
b/src/main/java/org/apache/sling/engine/impl/console/RequestHistoryConsolePlugin.java
index 2297ea7..6c7726a 100644
--- 
a/src/main/java/org/apache/sling/engine/impl/console/RequestHistoryConsolePlugin.java
+++ 
b/src/main/java/org/apache/sling/engine/impl/console/RequestHistoryConsolePlugin.java
@@ -19,7 +19,6 @@
 package org.apache.sling.engine.impl.console;
 
 import javax.servlet.Servlet;
-import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -119,65 +118,74 @@ public class RequestHistoryConsolePlugin extends 
HttpServlet {
     }
 
     @Override
-    protected void doGet(final HttpServletRequest req, final 
HttpServletResponse resp)
-            throws ServletException, IOException {
-        // get all requests and select request to display
-        final String key = req.getParameter(INDEX);
-        final RequestInfo info = key == null ? null : 
this.infoProvider.getRequestInfo(key);
-        final List<RequestInfo> values = new ArrayList<>();
-        for (final RequestInfo i : this.infoProvider.getRequestInfos()) {
-            values.add(i);
-        }
+    protected void doGet(final HttpServletRequest req, final 
HttpServletResponse resp) {
+        try {
+            // get all requests and select request to display
+            final String key = req.getParameter(INDEX);
+            final RequestInfo info = key == null ? null : 
this.infoProvider.getRequestInfo(key);
+            final List<RequestInfo> values = new ArrayList<>();
+            for (final RequestInfo i : this.infoProvider.getRequestInfos()) {
+                values.add(i);
+            }
 
-        final PrintWriter pw = resp.getWriter();
+            final PrintWriter pw = resp.getWriter();
 
-        if (this.infoProvider.isEnabled()) {
-            pw.println("<p class='statline ui-state-highlight'>Recorded " + 
values.size() + " requests (max: "
-                    + this.infoProvider.getMaxNumberOfInfos() + ")</p>");
-        } else {
-            pw.println("<p class='statline ui-state-highlight'>Request 
Recording disabled</p>");
-        }
+            if (this.infoProvider.isEnabled()) {
+                pw.println("<p class='statline ui-state-highlight'>Recorded " 
+ values.size() + " requests (max: "
+                        + this.infoProvider.getMaxNumberOfInfos() + ")</p>");
+            } else {
+                pw.println("<p class='statline ui-state-highlight'>Request 
Recording disabled</p>");
+            }
 
-        pw.println("<div class='ui-widget-header ui-corner-top buttonGroup'>");
-        pw.println("<span style='float: left; margin-left: 1em'>Recent 
Requests</span>");
-        pw.println(
-                "<form method='POST'><input type='hidden' name='clear' 
value='clear'><input type='submit' value='Clear' class='ui-state-default 
ui-corner-all'></form>");
-        pw.println("</div>");
-
-        printLinksTable(pw, values, key);
-        pw.println("<br/>");
-
-        if (info != null) {
-
-            pw.println("<table class='nicetable ui-widget'>");
-
-            // Links to other requests
-            pw.println("<thead>");
-            pw.println("<tr>");
-            pw.printf(
-                    "<th class='ui-widget-header'>Request %s (%s %s) by %s - 
RequestProgressTracker Info</th>%n",
-                    key,
-                    ResponseUtil.escapeXml(info.getMethod()),
-                    ResponseUtil.escapeXml(info.getPath()),
-                    ResponseUtil.escapeXml(info.getUserId()));
-            pw.println("</tr>");
-            pw.println("</thead>");
-
-            pw.println("<tbody>");
-
-            // Request Progress Tracker Info
-            pw.println("<tr><td><pre>");
-            pw.print(ResponseUtil.escapeXml(info.getLog()));
-            pw.println("</pre></td></tr>");
-            pw.println("</tbody></table>");
+            pw.println("<div class='ui-widget-header ui-corner-top 
buttonGroup'>");
+            pw.println("<span style='float: left; margin-left: 1em'>Recent 
Requests</span>");
+            pw.println(
+                    "<form method='POST'><input type='hidden' name='clear' 
value='clear'><input type='submit' value='Clear' class='ui-state-default 
ui-corner-all'></form>");
+            pw.println("</div>");
+
+            printLinksTable(pw, values, key);
+            pw.println("<br/>");
+
+            if (info != null) {
+
+                pw.println("<table class='nicetable ui-widget'>");
+
+                // Links to other requests
+                pw.println("<thead>");
+                pw.println("<tr>");
+                pw.printf(
+                        "<th class='ui-widget-header'>Request %s (%s %s) by %s 
- RequestProgressTracker Info</th>%n",
+                        ResponseUtil.escapeXml(key),
+                        ResponseUtil.escapeXml(info.getMethod()),
+                        ResponseUtil.escapeXml(info.getPath()),
+                        ResponseUtil.escapeXml(info.getUserId()));
+                pw.println("</tr>");
+                pw.println("</thead>");
+
+                pw.println("<tbody>");
+
+                // Request Progress Tracker Info
+                pw.println("<tr><td><pre>");
+                pw.print(ResponseUtil.escapeXml(info.getLog()));
+                pw.println("</pre></td></tr>");
+                pw.println("</tbody></table>");
+            }
+        } catch (final IOException ioe) {
+            getServletContext().log("Unable to render request history console 
output.", ioe);
+            resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
         }
     }
 
     @Override
-    protected void doPost(final HttpServletRequest req, final 
HttpServletResponse resp) throws IOException {
+    protected void doPost(final HttpServletRequest req, final 
HttpServletResponse resp) {
         if (req.getParameter(CLEAR) != null) {
             this.infoProvider.clear();
-            resp.sendRedirect(req.getRequestURI());
+            try {
+                resp.sendRedirect(req.getRequestURI());
+            } catch (final IOException ioe) {
+                getServletContext().log("Unable to redirect after clearing 
request history.", ioe);
+                resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+            }
         }
     }
 

Reply via email to