The following commit has been merged in the master branch:
commit a4c5af40a80bb93cb977f13a1a1d766949851968
Author: Damien Raude-Morvan <draz...@debian.org>
Date:   Sun Jan 15 19:41:34 2012 +0100

    Fix CVE-2011-4905 (potential Denial of Service) by backporting upstream 
patch on failover feature. (Closes: #655495).
    
    * Fix CVE-2011-4905 (potential Denial of Service) by backporting upstream
      patch on failover feature. (Closes: #655495).
    * Set urgency=high for security fix.

diff --git a/debian/changelog b/debian/changelog
index f97e88a..39e67ad 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+activemq (5.5.0+dfsg-5) unstable; urgency=high
+
+  * Fix CVE-2011-4905 (potential Denial of Service) by backporting upstream
+    patch on failover feature. (Closes: #655495).
+  * Set urgency=high for security fix.
+
+ -- Damien Raude-Morvan <draz...@debian.org>  Sun, 15 Jan 2012 19:38:21 +0100
+
 activemq (5.5.0+dfsg-4) unstable; urgency=low
 
   * d/activemq.init: Merge change proposed by Jonas Genannt to allow
diff --git a/debian/patches/CVE-2011-4605.diff 
b/debian/patches/CVE-2011-4605.diff
new file mode 100644
index 0000000..4e36785
--- /dev/null
+++ b/debian/patches/CVE-2011-4605.diff
@@ -0,0 +1,98 @@
+Description: Fix for CVE-2011-4905
+Bug-vendor: https://issues.apache.org/jira/browse/AMQ-3294
+Applied-Upstream: http://svn.apache.org/viewvc?view=revision&revision=1209700,
+ http://svn.apache.org/viewvc?view=revision&revision=1209841,
+ http://svn.apache.org/viewvc?view=revision&revision=1211844,
+ http://svn.apache.org/viewvc?view=revision&revision=1213642
+--- a/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java
++++ b/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java
+@@ -1292,10 +1292,17 @@
+                         }
+                         JMSException jmsEx = null;
+                         try {
+-                         jmsEx = 
JMSExceptionSupport.create(er.getException());
++                            jmsEx = 
JMSExceptionSupport.create(er.getException());
+                         }catch(Throwable e) {
+                             LOG.error("Caught an exception trying to create a 
JMSException for " +er.getException(),e);
+                         }
++                        //dispose of transport for security exceptions
++                        if (er.getException() instanceof SecurityException){
++                            Transport t = this.transport;
++                            if (null != t){
++                                ServiceSupport.dispose(t);
++                            }
++                        }
+                         if(jmsEx !=null) {
+                             throw jmsEx;
+                         }
+@@ -1504,6 +1511,12 @@
+         started.set(false);
+     }
+ 
++    public void finalize() throws Throwable{
++        if (scheduler != null){
++            scheduler.stop();
++        }
++    }
++
+     /**
+      * Changes the associated username/password that is associated with this
+      * connection. If the connection has been used, you must called cleanup()
+@@ -2206,10 +2219,17 @@
+     protected void onControlCommand(ControlCommand command) {
+         String text = command.getCommand();
+         if (text != null) {
+-            if (text.equals("shutdown")) {
++            if ("shutdown".equals(text)) {
+                 LOG.info("JVM told to shutdown");
+                 System.exit(0);
+             }
++            if (false && "close".equals(text)){
++                LOG.error("Broker " + getBrokerInfo() + "shutdown 
connection");
++                try {
++                    close();
++                } catch (JMSException e) {
++                }
++            }
+         }
+     }
+ 
+--- 
a/activemq-core/src/main/java/org/apache/activemq/broker/TransportConnection.java
++++ 
b/activemq-core/src/main/java/org/apache/activemq/broker/TransportConnection.java
+@@ -311,6 +311,10 @@
+             }
+             if (responseRequired) {
+                 response = new ExceptionResponse(e);
++                if(e instanceof java.lang.SecurityException){
++                    //still need to close this down - incase the peer of this 
transport doesn't play nice
++                    delayedStop(2000, "Failed with SecurityException: " + 
e.getLocalizedMessage());
++                }
+             } else {
+                 serviceException(e);
+             }
+@@ -932,6 +936,25 @@
+         }
+     }
+ 
++    public void delayedStop(final int waitTime, final String reason) {
++        if (waitTime > 0) {
++            try {
++                DefaultThreadPools.getDefaultTaskRunnerFactory().execute(new 
Runnable() {
++                    public void run() {
++                        try {
++                            Thread.sleep(waitTime);
++                            stopAsync();
++                            LOG.info("Stopping " + 
transport.getRemoteAddress() + " because " + reason);
++                        } catch (InterruptedException e) {
++                        }
++                    }
++                }, "delayedStop:" + transport.getRemoteAddress());
++            } catch (Throwable t) {
++                LOG.warn("cannot create stopAsync :", t);
++            }
++        }
++    }
++
+     public void stopAsync() {
+         // If we're in the middle of starting
+         // then go no further... for now.
diff --git a/debian/patches/series b/debian/patches/series
index 215555a..7b60e01 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,3 +4,4 @@ exclude_geronimo_jca.diff
 exclude_spring_osgi.diff
 javadoc_links.diff
 init_debian_default_values.diff
+CVE-2011-4605.diff

-- 
Debian packaging for activemq

_______________________________________________
pkg-java-commits mailing list
pkg-java-comm...@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to