Your message dated Sat, 20 May 2017 08:10:00 +0000
with message-id <[email protected]>
and subject line Re: Bug#862946: unblock: libxstream-java/1.4.9-2
has caused the Debian Bug report #862946,
regarding unblock: libxstream-java/1.4.9-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
862946: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=862946
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: [email protected]
Usertags: unblock

Hi

Please unblock package libxstream-java

It fixes  CVE-2017-7957, #861521, which could lead to a denial of
service during unmarshalling. 

+libxstream-java (1.4.9-2) unstable; urgency=medium
+
+  * Fixed CVE-2017-7957: Attempts to create an instance of the primitive
+    type 'void' during unmarshalling lead to a remote application crash.
+    (Closes: #861521)
+
+ -- Emmanuel Bourg <[email protected]>  Tue, 02 May 2017 16:52:35 +0200

https://www.debian.org/security/2017/dsa-3841

unblock libxstream-java/1.4.9-2

Regards,
Salvatore
diff -Nru libxstream-java-1.4.9/debian/changelog 
libxstream-java-1.4.9/debian/changelog
--- libxstream-java-1.4.9/debian/changelog      2016-03-29 12:12:30.000000000 
+0200
+++ libxstream-java-1.4.9/debian/changelog      2017-05-02 16:52:35.000000000 
+0200
@@ -1,3 +1,11 @@
+libxstream-java (1.4.9-2) unstable; urgency=medium
+
+  * Fixed CVE-2017-7957: Attempts to create an instance of the primitive
+    type 'void' during unmarshalling lead to a remote application crash.
+    (Closes: #861521)
+
+ -- Emmanuel Bourg <[email protected]>  Tue, 02 May 2017 16:52:35 +0200
+
 libxstream-java (1.4.9-1) unstable; urgency=medium
 
   * New upstream release
diff -Nru libxstream-java-1.4.9/debian/patches/CVE-2017-7957.patch 
libxstream-java-1.4.9/debian/patches/CVE-2017-7957.patch
--- libxstream-java-1.4.9/debian/patches/CVE-2017-7957.patch    1970-01-01 
01:00:00.000000000 +0100
+++ libxstream-java-1.4.9/debian/patches/CVE-2017-7957.patch    2017-05-02 
16:49:06.000000000 +0200
@@ -0,0 +1,97 @@
+Description: Fixes CVE-2017-7957: When a certain denyTypes workaround is not
+ used, XStream mishandles attempts to create an instance of the primitive type
+ 'void' during unmarshalling, leading to a remote application crash, as
+ demonstrated by an xstream.fromXML("<void/>") call.
+Origin: backport, https://github.com/x-stream/xstream/commit/b3570be
+Bug-Debian: https://bugs.debian.org/861521
+--- 
a/xstream/src/java/com/thoughtworks/xstream/converters/reflection/SunLimitedUnsafeReflectionProvider.java
++++ 
b/xstream/src/java/com/thoughtworks/xstream/converters/reflection/SunLimitedUnsafeReflectionProvider.java
+@@ -78,14 +78,18 @@
+             throw ex;
+         }
+         ErrorWritingException ex = null;
+-        try {
+-            return unsafe.allocateInstance(type);
+-        } catch (SecurityException e) {
+-            ex = new ObjectAccessException("Cannot construct type", e);
+-        } catch (InstantiationException e) {
+-            ex =  new ConversionException("Cannot construct type", e);
+-        } catch (IllegalArgumentException e) {
+-            ex = new ObjectAccessException("Cannot construct type", e);
++        if (type == void.class || type == Void.class) {
++            ex = new ConversionException("Type void cannot have an instance");
++        } else {
++            try {
++                return unsafe.allocateInstance(type);
++            } catch (final SecurityException e) {
++                ex = new ObjectAccessException("Cannot construct type", e);
++            } catch (final InstantiationException e) {
++                ex = new ConversionException("Cannot construct type", e);
++            } catch (final IllegalArgumentException e) {
++                ex = new ObjectAccessException("Cannot construct type", e);
++            }
+         }
+         ex.add("construction-type", type.getName());
+         throw ex;
+--- 
a/xstream/src/java/com/thoughtworks/xstream/security/PrimitiveTypePermission.java
++++ 
b/xstream/src/java/com/thoughtworks/xstream/security/PrimitiveTypePermission.java
+@@ -8,8 +8,9 @@
+ 
+ import com.thoughtworks.xstream.core.util.Primitives;
+ 
++
+ /**
+- * Permission for any primitive type and its boxed counterpart (incl. void).
++ * Permission for any primitive type and its boxed counterpart (excl. void).
+  * 
+  * @author J&ouml;rg Schaible
+  * @since 1.4.7
+@@ -21,7 +22,8 @@
+     public static final TypePermission PRIMITIVES = new 
PrimitiveTypePermission();
+ 
+     public boolean allows(Class type) {
+-        return type != null && type.isPrimitive() || Primitives.isBoxed(type);
++        return type != null && type != void.class && type != Void.class && 
type.isPrimitive()
++            || Primitives.isBoxed(type);
+     }
+ 
+     public int hashCode() {
+--- 
a/xstream/src/test/com/thoughtworks/acceptance/SecurityVulnerabilityTest.java
++++ 
b/xstream/src/test/com/thoughtworks/acceptance/SecurityVulnerabilityTest.java
+@@ -13,9 +13,12 @@
+ import java.beans.EventHandler;
+ 
+ import com.thoughtworks.xstream.XStreamException;
++import com.thoughtworks.xstream.converters.ConversionException;
+ import com.thoughtworks.xstream.converters.reflection.ReflectionConverter;
++import com.thoughtworks.xstream.security.ForbiddenClassException;
+ import com.thoughtworks.xstream.security.ProxyTypePermission;
+ 
++
+ /**
+  * @author J&ouml;rg Schaible
+  */
+@@ -80,4 +83,23 @@
+             BUFFER.append("Executed!");
+         }
+     }
++
++    public void testDeniedInstanceOfVoid() {
++        try {
++            xstream.fromXML("<void/>");
++            fail("Thrown " + ForbiddenClassException.class.getName() + " 
expected");
++        } catch (final ForbiddenClassException e) {
++            // OK
++        }
++    }
++
++    public void testAllowedInstanceOfVoid() {
++        xstream.allowTypes(void.class, Void.class);
++        try {
++            xstream.fromXML("<void/>");
++            fail("Thrown " + ConversionException.class.getName() + " 
expected");
++        } catch (final ConversionException e) {
++            assertEquals("void", e.get("construction-type"));
++        }
++    }
+ }
diff -Nru libxstream-java-1.4.9/debian/patches/series 
libxstream-java-1.4.9/debian/patches/series
--- libxstream-java-1.4.9/debian/patches/series 2016-03-29 11:26:24.000000000 
+0200
+++ libxstream-java-1.4.9/debian/patches/series 2017-05-02 16:27:42.000000000 
+0200
@@ -1 +1,2 @@
 01-java7-compatibility.patch
+CVE-2017-7957.patch

--- End Message ---
--- Begin Message ---
Salvatore Bonaccorso:
> Package: release.debian.org
> Severity: normal
> User: [email protected]
> Usertags: unblock
> 
> Hi
> 
> Please unblock package libxstream-java
> 
> It fixes  CVE-2017-7957, #861521, which could lead to a denial of
> service during unmarshalling. 
> 
> +libxstream-java (1.4.9-2) unstable; urgency=medium
> +
> +  * Fixed CVE-2017-7957: Attempts to create an instance of the primitive
> +    type 'void' during unmarshalling lead to a remote application crash.
> +    (Closes: #861521)
> +
> + -- Emmanuel Bourg <[email protected]>  Tue, 02 May 2017 16:52:35 +0200
> 
> https://www.debian.org/security/2017/dsa-3841
> 
> unblock libxstream-java/1.4.9-2
> 
> Regards,
> Salvatore
> 

Unblocked, thanks.

~Niels

--- End Message ---

Reply via email to