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

Bug#998436: bullseye-pu: package opendmarc/1.4.0~beta1+dfsg-6+deb11u1



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

I would like to propose a stable update for opendmarc.

[ Reason ]
Since releasing the opendmarc version in Debian bullseye, two important
issues affecting it have been reported upstream.

[ Impact ]
1) opendmarc-import is broken in Debian bullseye (regression).
   https://github.com/trusteddomainproject/OpenDMARC/issues/189
2) opendmarc crashes when receiving certain ARC-Seal headers.
   https://github.com/trusteddomainproject/OpenDMARC/issues/183

[ Tests ]
For issue 1) I have tested the fix with MariaDB on Debian bullseye.
For issue 2) I am using the identical patch in unstable myself.

[ Risks ]
None that I know of, the fixes are small and seem sensible enough.

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in stable
  [x] the issue is verified as fixed in unstable

[ Changes ]
See changelog and debdiff.

Please let me upload this update via Debian mentors.

Thank you.


-- 
David
diff -Nru opendmarc-1.4.0~beta1+dfsg/debian/changelog opendmarc-1.4.0~beta1+dfsg/debian/changelog
--- opendmarc-1.4.0~beta1+dfsg/debian/changelog	2021-06-18 09:37:57.000000000 +0200
+++ opendmarc-1.4.0~beta1+dfsg/debian/changelog	2021-11-03 16:56:39.000000000 +0100
@@ -1,3 +1,12 @@
+opendmarc (1.4.0~beta1+dfsg-6+deb11u1) stable; urgency=medium
+
+  * Amend patch "ticket193.patch" (Closes: #995694):
+    - Remove unexplained diff that breaks opendmarc-import
+  * Add patch "arcseal-segfaults.patch" (Closes: #995703):
+    - Fix segfaults, increase token max lengths in ARC-Seal headers
+
+ -- David Bürgin <dbuergin@gluet.ch>  Wed, 03 Nov 2021 16:56:39 +0100
+
 opendmarc (1.4.0~beta1+dfsg-6) unstable; urgency=high
 
   * Add patch for CVE-2021-34555 from upstream issue tracker:
diff -Nru opendmarc-1.4.0~beta1+dfsg/debian/patches/arcseal-segfaults.patch opendmarc-1.4.0~beta1+dfsg/debian/patches/arcseal-segfaults.patch
--- opendmarc-1.4.0~beta1+dfsg/debian/patches/arcseal-segfaults.patch	1970-01-01 01:00:00.000000000 +0100
+++ opendmarc-1.4.0~beta1+dfsg/debian/patches/arcseal-segfaults.patch	2021-11-03 14:25:50.000000000 +0100
@@ -0,0 +1,39 @@
+Description: Fix segfaults, increase token max lengths in ARC-Seal headers
+Origin: other, https://github.com/trusteddomainproject/OpenDMARC/files/6717466/opendmarc-arcseal.patch.txt
+Bug: https://github.com/trusteddomainproject/OpenDMARC/issues/183
+
+--- a/opendmarc/opendmarc-arcseal.c
++++ b/opendmarc/opendmarc-arcseal.c
+@@ -24,7 +24,7 @@
+ #include "opendmarc.h"
+ 
+ #define OPENDMARC_ARCSEAL_MAX_FIELD_NAME_LEN 255
+-#define OPENDMARC_ARCSEAL_MAX_TOKEN_LEN      512
++#define OPENDMARC_ARCSEAL_MAX_TOKEN_LEN      768
+ 
+ /* tables */
+ struct opendmarc_arcseal_lookup
+@@ -223,7 +223,12 @@
+ 		if (*token_ptr == '\0')
+ 			return 0;
+ 		tag_label = strsep(&token_ptr, "=");
++		if (token_ptr == NULL)
++			return 0;
++
+ 		tag_value = opendmarc_arcseal_strip_whitespace(token_ptr);
++		if (tag_value == NULL)
++			return 0;
+ 
+ 		tag_code = opendmarc_arcseal_convert(as_tags, tag_label);
+ 
+--- a/opendmarc/opendmarc-arcseal.h
++++ b/opendmarc/opendmarc-arcseal.h
+@@ -32,7 +32,7 @@
+ /* max header tag value length (short) */
+ #define OPENDMARC_ARCSEAL_MAX_SHORT_VALUE_LEN 256
+ /* max header tag value length (long) */
+-#define OPENDMARC_ARCSEAL_MAX_LONG_VALUE_LEN  512
++#define OPENDMARC_ARCSEAL_MAX_LONG_VALUE_LEN  768
+ 
+ /* names and field labels */
+ #define OPENDMARC_ARCSEAL_HDRNAME	"ARC-Seal"
diff -Nru opendmarc-1.4.0~beta1+dfsg/debian/patches/series opendmarc-1.4.0~beta1+dfsg/debian/patches/series
--- opendmarc-1.4.0~beta1+dfsg/debian/patches/series	2021-06-15 16:23:10.000000000 +0200
+++ opendmarc-1.4.0~beta1+dfsg/debian/patches/series	2021-11-03 14:23:34.000000000 +0100
@@ -13,3 +13,4 @@
 cve-2020-12272.patch
 cve-2019-20790.patch
 cve-2021-34555.patch
+arcseal-segfaults.patch
diff -Nru opendmarc-1.4.0~beta1+dfsg/debian/patches/ticket193.patch opendmarc-1.4.0~beta1+dfsg/debian/patches/ticket193.patch
--- opendmarc-1.4.0~beta1+dfsg/debian/patches/ticket193.patch	2021-06-15 16:21:17.000000000 +0200
+++ opendmarc-1.4.0~beta1+dfsg/debian/patches/ticket193.patch	2021-11-03 14:18:41.000000000 +0100
@@ -107,92 +107,3 @@
  $rows = $dbi_s->execute($maxage);
  if (!$rows)
  {
-diff --git a/reports/opendmarc-import.in b/reports/opendmarc-import.in
-index 3a2f404..259f546 100755
---- a/reports/opendmarc-import.in
-+++ b/reports/opendmarc-import.in
-@@ -233,14 +233,12 @@ sub update_db
- 	$envfrom_id = get_table_id($envdomain, "domains");
- 	$pdomain_id = get_table_id($pdomain, "domains");
- 	$ipaddr_id = get_table_id($ipaddr, "ipaddr", "addr");
--	$request_id = get_table_id($from_id, "requests", "domain");
- 
- 	if (!defined($rep_id) ||
- 	    !defined($from_id) ||
- 	    !defined($envfrom_id) ||
- 	    !defined($pdomain_id) ||
--	    !defined($ipaddr_id) ||
--	    !defined($request_id))
-+	    !defined($ipaddr_id))
- 	{
- 		return;
- 	}
-@@ -372,39 +370,48 @@ sub update_db
- 
- 	if (get_value("requests", "locked", $request_id) != 1)
- 	{
--		if (scalar @rua > 0)
-+		print STDERR "$progname: failed to retrieve table ID: " . $dbi_h->errstr . "\n";
-+		return undef;
-+	}
-+
-+	undef $request_id;
-+	while ($dbi_a = $dbi_t->fetchrow_arrayref())
-+	{
-+		if (defined($dbi_a->[0]))
- 		{
--			$repuri = join(",", @rua);
--			$dbi_s = $dbi_h->prepare("UPDATE requests SET repuri = ? WHERE id = ?");
-+			$request_id = $dbi_a->[0];
-+		}
-+	}
- 
--			if (!$dbi_s->execute($repuri, $request_id))
--			{
--				print STDERR "$progname: failed to update reporting URI for $fdomain: " . $dbi_h->errstr . "\n";
--				$dbi_s->finish;
--				return;
--			}
-+	$dbi_t->finish;
- 
--			$dbi_s->finish;
--		}
--		else
-+	$repuri = join(",", @rua);
-+
-+	if (defined($request_id))
-+	{
-+		if (get_value("requests", "locked", $request_id) != 1)
- 		{
- 			$dbi_s = $dbi_h->prepare("UPDATE requests SET repuri = '' WHERE id = ?");
- 
--			if (!$dbi_s->execute($request_id))
-+			if (!$dbi_s->execute($from_id, $repuri, $adkim, $aspf, $p, $sp, $pct, $request_id))
- 			{
--				print STDERR "$progname: failed to update reporting URI for $fdomain: " . $dbi_h->errstr . "\n";
-+				print STDERR "$progname: failed to update policy data for $fdomain: " . $dbi_h->errstr . "\n";
- 				$dbi_s->finish;
- 				return;
- 			}
--
--			$dbi_s->finish;
- 		}
-+		else
-+		{
-+			print STDERR "$progname: policy data for $fdomain not updated, because they are locked\n";
-+		}
-+	}
-+	else
-+	{
-+		$dbi_s = $dbi_h->prepare("insert requests SET domain = ?, repuri = ?, adkim = ?, aspf = ?, policy = ?, spolicy = ?, pct = ?");
- 
--		$dbi_s = $dbi_h->prepare("UPDATE requests SET adkim = ?, aspf = ?, policy = ?, spolicy = ?, pct = ? WHERE id = ?");
--
--		if (!$dbi_s->execute($adkim, $aspf, $p, $sp, $pct, $request_id))
-+		if (!$dbi_s->execute($from_id, $repuri, $adkim, $aspf, $p, $sp, $pct))
- 		{
--			print STDERR "$progname: failed to update policy data for $fdomain: " . $dbi_h->errstr . "\n";
-+			print STDERR "$progname: failed to insert policy data for $fdomain: " . $dbi_h->errstr . "\n";
- 			$dbi_s->finish;
- 			return;
- 		}
diff -Nru opendmarc-1.4.0~beta1+dfsg/debian/patches/ticket204.patch opendmarc-1.4.0~beta1+dfsg/debian/patches/ticket204.patch
--- opendmarc-1.4.0~beta1+dfsg/debian/patches/ticket204.patch	2021-06-15 16:21:17.000000000 +0200
+++ opendmarc-1.4.0~beta1+dfsg/debian/patches/ticket204.patch	2021-11-03 14:16:40.000000000 +0100
@@ -11,7 +11,7 @@
 index 259f546..9eaf1ab 100755
 --- a/reports/opendmarc-import.in
 +++ b/reports/opendmarc-import.in
-@@ -656,7 +656,7 @@ while (<$inputfh>)
+@@ -649,7 +649,7 @@ while (<$inputfh>)
  				}
  
  	  case "from"		{
@@ -20,7 +20,7 @@
  				}
  
  	  case "job"		{
-@@ -698,7 +698,7 @@ while (<$inputfh>)
+@@ -691,7 +691,7 @@ while (<$inputfh>)
  				}
  
  	  case "mfrom"		{
@@ -29,7 +29,7 @@
  				}
  
  	  case "p"		{
-@@ -710,7 +710,7 @@ while (<$inputfh>)
+@@ -703,7 +703,7 @@ while (<$inputfh>)
  				}
  
  	  case "pdomain"	{

Reply to: