summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mail-mta/netqmail/files')
-rw-r--r--mail-mta/netqmail/files/genqmail-20080406-ldflags.patch4
-rw-r--r--mail-mta/netqmail/files/netqmail-1.06-ipme-multiple.patch117
-rw-r--r--mail-mta/netqmail/files/use-new-path-for-functions.sh.patch4
3 files changed, 121 insertions, 4 deletions
diff --git a/mail-mta/netqmail/files/genqmail-20080406-ldflags.patch b/mail-mta/netqmail/files/genqmail-20080406-ldflags.patch
index 1eb334c259c1..cfd27cbb8280 100644
--- a/mail-mta/netqmail/files/genqmail-20080406-ldflags.patch
+++ b/mail-mta/netqmail/files/genqmail-20080406-ldflags.patch
@@ -1,6 +1,6 @@
diff -Nuar genqmail-20080406.orig/spp/Makefile genqmail-20080406/spp/Makefile
---- genqmail-20080406.orig/spp/Makefile 2008-04-06 15:44:14.000000000 +0000
-+++ genqmail-20080406/spp/Makefile 2013-05-27 00:37:58.687763457 +0000
+--- a/genqmail-20080406/spp/Makefile 2008-04-06 15:44:14.000000000 +0000
++++ b/genqmail-20080406/spp/Makefile 2013-05-27 00:37:58.687763457 +0000
@@ -14,7 +14,7 @@
rm -f $(TARGETS)
diff --git a/mail-mta/netqmail/files/netqmail-1.06-ipme-multiple.patch b/mail-mta/netqmail/files/netqmail-1.06-ipme-multiple.patch
new file mode 100644
index 000000000000..85b5a450c959
--- /dev/null
+++ b/mail-mta/netqmail/files/netqmail-1.06-ipme-multiple.patch
@@ -0,0 +1,117 @@
+From d24a34857afc33ed11da9ba62736c0bb9b3e5b94 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Thu, 29 Aug 2019 20:35:48 +0200
+Subject: [PATCH 1/2] ask kernel for the correct buffer size to satisfy
+ SIOCGIFCONF before looping
+
+---
+ ipme.c | 41 ++++++++++++++++++++++++++++-------------
+ 1 file changed, 28 insertions(+), 13 deletions(-)
+
+diff --git a/ipme.c b/ipme.c
+index 3c86127..d88785d 100644
+--- a/ipme.c
++++ b/ipme.c
+@@ -52,20 +52,35 @@ int ipme_init()
+ byte_copy(&ix.ip,4,"\0\0\0\0");
+ if (!ipalloc_append(&ipme,&ix)) { return 0; }
+ if ((s = socket(AF_INET,SOCK_STREAM,0)) == -1) return -1;
+-
+- len = 256;
+- for (;;) {
+- if (!stralloc_ready(&buf,len)) { close(s); return 0; }
+- buf.len = 0;
++
++ ifc.ifc_buf = 0;
++ ifc.ifc_len = 0;
++
++ /* first pass: just ask what the correct length for all addresses is */
++ len = 0;
++ if (ioctl(s,SIOCGIFCONF,&ifc) >= 0 && ifc.ifc_len > 0) { /* > is for System V */
++ if (!stralloc_ready(&buf,ifc.ifc_len)) { close(s); return 0; }
+ ifc.ifc_buf = buf.s;
+- ifc.ifc_len = len;
+- if (ioctl(s,SIOCGIFCONF,&ifc) >= 0) /* > is for System V */
+- if (ifc.ifc_len + sizeof(*ifr) + 64 < len) { /* what a stupid interface */
+- buf.len = ifc.ifc_len;
+- break;
+- }
+- if (len > 200000) { close(s); return -1; }
+- len += 100 + (len >> 2);
++ if (ioctl(s,SIOCGIFCONF,&ifc) >= 0)
++ buf.len = ifc.ifc_len;
++ }
++
++ /* check if we have complete length, otherwise try so sort that out */
++ if (buf.len == 0) {
++ len = 256;
++ for (;;) {
++ if (!stralloc_ready(&buf,len)) { close(s); return 0; }
++ buf.len = 0;
++ ifc.ifc_buf = buf.s;
++ ifc.ifc_len = len;
++ if (ioctl(s,SIOCGIFCONF,&ifc) >= 0) /* > is for System V */
++ if (ifc.ifc_len + sizeof(*ifr) + 64 < len) { /* what a stupid interface */
++ buf.len = ifc.ifc_len;
++ break;
++ }
++ if (len > 200000) { close(s); return -1; }
++ len += 100 + (len >> 2);
++ }
+ }
+ x = buf.s;
+ while (x < buf.s + buf.len) {
+--
+2.16.4
+
+From 9d6c05d092e3cf94a6591cd5420f8026fcd4691f Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Thu, 29 Aug 2019 20:37:03 +0200
+Subject: [PATCH 2/2] ipme: fix detection of multiple IP addresses on the same
+ link
+
+The problem was that the code did another ioctl() to check if the link is
+actually up, and when doing this overwrites the information it is currently
+looking at. The code when sa_len is available copies the current IP address out
+before checking if the link is up. Reorder the code so both branches share more
+code and both work.
+---
+ CHANGES | 2 ++
+ ipme.c | 14 +++-----------
+ 2 files changed, 5 insertions(+), 11 deletions(-)
+
+diff --git a/ipme.c b/ipme.c
+index d88785d..e163f5b 100644
+--- a/ipme.c
++++ b/ipme.c
+@@ -89,6 +89,9 @@ int ipme_init()
+ len = sizeof(ifr->ifr_name) + ifr->ifr_addr.sa_len;
+ if (len < sizeof(*ifr))
+ len = sizeof(*ifr);
++#else
++ len = sizeof(*ifr);
++#endif
+ if (ifr->ifr_addr.sa_family == AF_INET) {
+ sin = (struct sockaddr_in *) &ifr->ifr_addr;
+ byte_copy(&ix.ip,4,&sin->sin_addr);
+@@ -96,17 +99,6 @@ int ipme_init()
+ if (ifr->ifr_flags & IFF_UP)
+ if (!ipalloc_append(&ipme,&ix)) { close(s); return 0; }
+ }
+-#else
+- len = sizeof(*ifr);
+- if (ioctl(s,SIOCGIFFLAGS,x) == 0)
+- if (ifr->ifr_flags & IFF_UP)
+- if (ioctl(s,SIOCGIFADDR,x) == 0)
+- if (ifr->ifr_addr.sa_family == AF_INET) {
+- sin = (struct sockaddr_in *) &ifr->ifr_addr;
+- byte_copy(&ix.ip,4,&sin->sin_addr);
+- if (!ipalloc_append(&ipme,&ix)) { close(s); return 0; }
+- }
+-#endif
+ x += len;
+ }
+ close(s);
+--
+2.16.4
+
diff --git a/mail-mta/netqmail/files/use-new-path-for-functions.sh.patch b/mail-mta/netqmail/files/use-new-path-for-functions.sh.patch
index 52f3d8e9a957..c107db0480f9 100644
--- a/mail-mta/netqmail/files/use-new-path-for-functions.sh.patch
+++ b/mail-mta/netqmail/files/use-new-path-for-functions.sh.patch
@@ -1,5 +1,5 @@
---- genqmail-20080406.orig/ssl/mkservercert.orig 2015-10-18 12:46:40.082559295 -0200
-+++ genqmail-20080406/ssl/mkservercert 2015-10-18 12:49:03.749576181 -0200
+--- a/genqmail-20080406/ssl/mkservercert.orig 2015-10-18 12:46:40.082559295 -0200
++++ b/genqmail-20080406/ssl/mkservercert 2015-10-18 12:49:03.749576181 -0200
@@ -5,7 +5,7 @@
# Based on mkimapdcert from courier-imap.