[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#848610: jessie-pu: package pgpdump/0.28-1+deb8u1



Package: release.debian.org
Severity: normal
Tags: jessie
User: release.debian.org@packages.debian.org
Usertags: pu

Hello release team,

CVE-2016-4021[1] hasn't been handled in jessie yet. The security team
suggested to use an upcoming point release for this, this got ACKed
by the stable security team. The pgpdump maintainer Jose Luis Rivas
(CC'd) has agreed to this procedure.

Find attached a debdiff based on the data in the tracker and upstream
git, and can confirm the fix mitigates the issue.

You might notice it's not the original patch, instead it includes a
follow-up commit from upstream.[2] And while preparing the diff I
realized it's probably a good idea to include commit 6e15953: "fixing
a buffer overrun" that was found using the American fuzzy lop as well.

Regards,

    Christoph

[1] https://security-tracker.debian.org/tracker/CVE-2016-4021
[2] See https://github.com/kazu-yamamoto/pgpdump/commits/master/buffer.c
    for the commit history.
diff -u pgpdump-0.28/debian/changelog pgpdump-0.28/debian/changelog
--- pgpdump-0.28/debian/changelog
+++ pgpdump-0.28/debian/changelog
@@ -1,3 +1,11 @@
+pgpdump (0.28-1+deb8u1) jessie; urgency=high
+
+  * Fix endless loop parsing specially crafted input in read_binary.
+    Upstream commits ece39dd and 0c306f4. Closes: #773747 [CVE-2016-4021]
+  * Fix a buffer overrun in read_radix64. Upstream commit 6e15953
+
+ -- Christoph Biedl <debian.axhn@manchmal.in-ulm.de>  Thu, 15 Dec 2016 23:30:21 +0100
+
 pgpdump (0.28-1) unstable; urgency=low
 
   * New upstream version.
only in patch2:
unchanged:
--- pgpdump-0.28.orig/buffer.c
+++ pgpdump-0.28/buffer.c
@@ -80,8 +80,17 @@
 private int
 read_binary(byte *p, unsigned int max)
 {
-	/* errno */
-	return fread(p, sizeof(byte), max, stdin);
+	if (feof(stdin)) {
+		exit(EXIT_SUCCESS);
+	}
+
+	size_t ret = fread(p, sizeof(byte), max, stdin);
+
+	if (ferror(stdin)) {
+		warn_exit("error in read_binary");
+	}
+
+	return ret;
 }
 
 private int
@@ -117,6 +126,9 @@
 			done = YES;
 			return out;
 		}
+		if (c >= 128) {
+		  continue;
+		}
 		d = base256[c];
 		switch (d) {
 		case OOB:

Attachment: signature.asc
Description: Digital signature


Reply to: