Author: markt
Date: Sun Jan 14 11:43:00 2007
New Revision: 496117

URL: http://svn.apache.org/viewvc?view=rev&rev=496117
Log:
Fix bug 39088. prevent infinite loops when an exception is thrown the returns 
itself for getRootCause()

Modified:
    
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
    
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml

Modified: 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java?view=diff&rev=496117&r1=496116&r2=496117
==============================================================================
--- 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
 (original)
+++ 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
 Sun Jan 14 11:43:00 2007
@@ -639,7 +639,9 @@
             try {
                 rootCauseCheck = (Throwable)IntrospectionUtils.getProperty
                                             (rootCause, "rootCause");
-                if (rootCauseCheck!=null)
+                if (rootCause == rootCauseCheck)
+                    rootCauseCheck = null;
+                else if (rootCauseCheck != null)
                     rootCause = rootCauseCheck;
 
             } catch (ClassCastException ex) {

Modified: 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java?view=diff&rev=496117&r1=496116&r2=496117
==============================================================================
--- 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java
 (original)
+++ 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java
 Sun Jan 14 11:43:00 2007
@@ -229,6 +229,7 @@
             sb.append(RequestUtil.filter(stackTrace));
             sb.append("</pre></p>");
 
+            Throwable nestedRootCause = null;
             while (rootCause != null) {
                 stackTrace = JdkCompat.getJdkCompat()
                     .getPartialServletStackTrace(rootCause);
@@ -239,8 +240,12 @@
                 sb.append("</pre></p>");
                 // In case root cause is somehow heavily nested
                 try {
-                    rootCause = (Throwable)IntrospectionUtils.getProperty
+                    nestedRootCause = (Throwable)IntrospectionUtils.getProperty
                                                 (rootCause, "rootCause");
+                    if (rootCause == nestedRootCause)
+                        rootCause = null;
+                    else
+                        rootCause = nestedRootCause;
                 } catch (ClassCastException e) {
                     rootCause = null;
                 }

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=496117&r1=496116&r2=496117
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Sun Jan 14 11:43:00 2007
@@ -74,6 +74,10 @@
         Context filename. (markt)
       </fix>
       <fix>
+        <bug>39088</bug>: Prevent infinte loops when an exception is thrown
+        that returns itself for getRootCause(). (markt)
+      </fix>
+      <fix>
         <bug>39436</bug>: Correct MIME type for SVG. (markt)
       </fix>
       <fix>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to