summaryrefslogtreecommitdiff
path: root/mail/mlmmj/files/patch-reduce-subscription-confirmation-address-length.diff
blob: 544c99a7621ef4cca1143aaab4dbb6647dd87b5c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
$NetBSD: patch-reduce-subscription-confirmation-address-length.diff,v 1.1 2020/03/31 20:37:47 roy Exp $

From cb0788bc35c471a87fc75aca6d4e405fdbaccfd8 Mon Sep 17 00:00:00 2001
From: Geert Stappers <stappers@stappers.it>
Date: Thu, 25 May 2017 09:17:55 +0200
Subject: [PATCH] Reduce subscription confirmation address length to fit RFC
 5321

The local part of mailing list subscription confirmation addresses
formed of:

  mailing-list-name "+confsub-" 16-random-hex "-" sender-address

can get very long, especially if sender-address is long.
However, RFC limits it at 64 characters.

Closes http://mlmmj.org/bugs/bug.php?id=63

Reported-by: mgorny@gentoo.org
---
 src/mlmmj-sub.c   |  2 +-
 src/mlmmj-unsub.c |  2 +-
 src/strgen.c      | 23 +----------------------
 3 files changed, 3 insertions(+), 24 deletions(-)

diff --git a/src/mlmmj-sub.c b/src/mlmmj-sub.c
index 3335817..5c8c1ae 100644
--- src/mlmmj-sub.c
+++ src/mlmmj-sub.c
@@ -413,7 +413,7 @@ void generate_subconfirm(const char *listdir, const char *listaddr,
         do {
                 myfree(confirmfilename);
                 myfree(randomstr);
-		randomstr = random_plus_addr(subaddr);
+		randomstr = random_str();
                 confirmfilename = concatstr(3, listdir, "/subconf/",
 					    randomstr);
 
diff --git a/src/mlmmj-unsub.c b/src/mlmmj-unsub.c
index 0fa42a1..8e13f3c 100644
--- src/mlmmj-unsub.c
+++ src/mlmmj-unsub.c
@@ -171,7 +171,7 @@ void generate_unsubconfirm(const char *listdir, const char *listaddr,
         do {
                 myfree(confirmfilename);
                 myfree(randomstr);
-		randomstr = random_plus_addr(subaddr);
+		randomstr = random_str();
                 confirmfilename = concatstr(3, listdir, "/unsubconf/",
 					    randomstr);
 
diff --git a/src/strgen.c b/src/strgen.c
index f13db47..673f44a 100644
--- src/strgen.c
+++ src/strgen.c
@@ -40,31 +40,10 @@
 
 char *random_str()
 {
-	size_t len = 17;
+	size_t len = 17; /* sixteen hex digits plus terminating zero */
 	char *dest = mymalloc(len);
 
 	snprintf(dest, len, "%08x%08x", random_int(), random_int());
-
-	return dest;
-}
-
-char *random_plus_addr(const char *addr)
-{
-	size_t len = strlen(addr) + 128;
-	char *dest = mymalloc(len);
-	char *atsign;
-	char *tmpstr;
-
-	tmpstr = mymalloc(len);
-	snprintf(tmpstr, len, "%s", addr);
-
-	atsign = strchr(tmpstr, '@');
-	MY_ASSERT(atsign);
-	*atsign = '=';
-
-	snprintf(dest, len, "%08x%08x-%s", random_int(), random_int(), tmpstr);
-
-	myfree(tmpstr);
 	
 	return dest;
 }