diff options
author | Rolf Eike Beer <eike@sf-mail.de> | 2019-09-21 18:51:05 +0200 |
---|---|---|
committer | Joonas Niilola <juippis@gentoo.org> | 2019-09-25 06:31:58 +0300 |
commit | 6901a0a254a693859b3b83fabb26680d1bc900a0 (patch) | |
tree | 12991077ec213a6fd26e6a4a78011a42d3c9323d /mail-mta/netqmail/files | |
parent | dev-libs/aws-sdk-cpp: Shorten the 'other' USE flag description (diff) | |
download | gentoo-6901a0a254a693859b3b83fabb26680d1bc900a0.tar.gz gentoo-6901a0a254a693859b3b83fabb26680d1bc900a0.tar.bz2 gentoo-6901a0a254a693859b3b83fabb26680d1bc900a0.zip |
mail-mta/netqmail: upgrade EAPI, clean up
- properly handle multiple IP addresses on the same interface
Closes: https://bugs.gentoo.org/show_bug.cgi?id=566826
Closes: https://github.com/gentoo/gentoo/pull/12989
Signed-off-by: Rolf Eike Beer <eike@sf-mail.de>
Signed-off-by: Joonas Niilola <juippis@gentoo.org>
Diffstat (limited to 'mail-mta/netqmail/files')
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. |