diff options
author | Eray Aslan <eras@gentoo.org> | 2018-06-22 15:20:34 +0300 |
---|---|---|
committer | Eray Aslan <eras@gentoo.org> | 2018-06-22 15:21:08 +0300 |
commit | f99b2a0dc1644fd2983a787ff7d0354b09946f7e (patch) | |
tree | de418e8f9d0dc0a6115a81ac82032c93de31a6cc /net-mail | |
parent | sys-devel/multilib-gcc-wrapper: Bump to EAPI=7 (diff) | |
download | gentoo-f99b2a0dc1644fd2983a787ff7d0354b09946f7e.tar.gz gentoo-f99b2a0dc1644fd2983a787ff7d0354b09946f7e.tar.bz2 gentoo-f99b2a0dc1644fd2983a787ff7d0354b09946f7e.zip |
net-mail/mailutils: fix endiannes problem
Closes: https://bugs.gentoo.org/654992
Package-Manager: Portage-2.3.40, Repoman-2.3.9
Diffstat (limited to 'net-mail')
-rw-r--r-- | net-mail/mailutils/files/mailutils-3.4-fix-endianness.patch | 122 | ||||
-rw-r--r-- | net-mail/mailutils/mailutils-3.4-r2.ebuild | 133 |
2 files changed, 255 insertions, 0 deletions
diff --git a/net-mail/mailutils/files/mailutils-3.4-fix-endianness.patch b/net-mail/mailutils/files/mailutils-3.4-fix-endianness.patch new file mode 100644 index 000000000000..0e52fae20c1b --- /dev/null +++ b/net-mail/mailutils/files/mailutils-3.4-fix-endianness.patch @@ -0,0 +1,122 @@ +From feecde8c46cdb597a76df5e6ef02b854843a8a5c Mon Sep 17 00:00:00 2001 +From: Sergey Poznyakoff <gray@gnu.org> +Date: Thu, 21 Jun 2018 09:46:43 +0300 +Subject: Fix endianness bug in string to IP conversion + +* libmailutils/cidr/fromsa.c (_mu_inaddr_to_bytes) +(_mu_sockaddr_to_bytes): Fix improper endianness conversion. +* libmailutils/cidr/tosa.c (mu_cidr_to_sockaddr): Simplify conversion. +--- + libmailutils/cidr/fromsa.c | 45 ++++++++++++++++++++------------------------- + libmailutils/cidr/tosa.c | 9 ++------- + 2 files changed, 22 insertions(+), 32 deletions(-) + +diff --git a/libmailutils/cidr/fromsa.c b/libmailutils/cidr/fromsa.c +index f57aadc..39d24fd 100644 +--- a/libmailutils/cidr/fromsa.c ++++ b/libmailutils/cidr/fromsa.c +@@ -29,55 +29,50 @@ + #include <mailutils/cidr.h> + #include <mailutils/errno.h> + +-static void +-uint32_to_bytes (unsigned char *bytes, uint32_t u) +-{ +- int i; +- +- for (i = 0; i < 4; i++) +- { +- bytes[i] = u & 0xff; +- u >>= 8; +- } +-} +- + int + _mu_inaddr_to_bytes (int af, void *buf, unsigned char *bytes) + { +- uint32_t u; ++ size_t len; + + switch (af) + { + case AF_INET: +- memcpy (&u, buf, sizeof u); +- uint32_to_bytes (bytes, u); +- return 4; +- ++ len = 4; ++ break; ++ + #ifdef MAILUTILS_IPV6 + case AF_INET6: +- memcpy (bytes, buf, 16); +- return 16; ++ len = 16; ++ break; + #endif ++ ++ default: ++ len = 0; + } +- return 0; ++ memcpy (bytes, buf, len); ++ return len; + } + + int + _mu_sockaddr_to_bytes (unsigned char *bytes, struct sockaddr const *sa) + { ++ void *buf; + switch (sa->sa_family) + { + case AF_INET: +- uint32_to_bytes (bytes, ((struct sockaddr_in*)sa)->sin_addr.s_addr); +- return 4; ++ buf = &(((struct sockaddr_in*)sa)->sin_addr.s_addr); ++ break; + + #ifdef MAILUTILS_IPV6 + case AF_INET6: +- memcpy (bytes, &((struct sockaddr_in6*)sa)->sin6_addr, 16); +- return 16; ++ buf = &(((struct sockaddr_in6*)sa)->sin6_addr); ++ break; + #endif ++ ++ default: ++ return 0; + } +- return 0; ++ return _mu_inaddr_to_bytes (sa->sa_family, buf, bytes); + } + + int +diff --git a/libmailutils/cidr/tosa.c b/libmailutils/cidr/tosa.c +index 33715e1..2b372b1 100644 +--- a/libmailutils/cidr/tosa.c ++++ b/libmailutils/cidr/tosa.c +@@ -42,19 +42,14 @@ mu_cidr_to_sockaddr (struct mu_cidr *cidr, struct sockaddr **psa) + } addr; + struct sockaddr *sa; + int socklen; +- int i; +- ++ + memset (&addr, 0, sizeof (addr)); + addr.sa.sa_family = cidr->family; + switch (cidr->family) + { + case AF_INET: + socklen = sizeof (addr.s_in); +- for (i = 0; i < cidr->len; i++) +- { +- addr.s_in.sin_addr.s_addr <<= 8; +- addr.s_in.sin_addr.s_addr |= cidr->address[i]; +- } ++ memcpy (&addr.s_in.sin_addr.s_addr, cidr->address, 4); + break; + + #ifdef MAILUTILS_IPV6 +-- +cgit v1.0-41-gc330 + diff --git a/net-mail/mailutils/mailutils-3.4-r2.ebuild b/net-mail/mailutils/mailutils-3.4-r2.ebuild new file mode 100644 index 000000000000..29af9bd8f3ab --- /dev/null +++ b/net-mail/mailutils/mailutils-3.4-r2.ebuild @@ -0,0 +1,133 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +PYTHON_COMPAT=( python2_7 ) + +inherit autotools eutils flag-o-matic python-single-r1 toolchain-funcs + +DESCRIPTION="A useful collection of mail servers, clients, and filters" +HOMEPAGE="https://www.gnu.org/software/mailutils/mailutils.html" +SRC_URI="mirror://gnu/mailutils/${P}.tar.xz" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~x86 ~ppc-macos ~x64-macos ~x86-macos" +IUSE="berkdb bidi +clients gdbm sasl guile ipv6 kerberos kyotocabinet ldap \ + mysql nls pam postgres python servers ssl static-libs +threads tcpd \ + tokyocabinet" + +RDEPEND="!mail-client/nmh + !mail-filter/libsieve + !mail-client/mailx + !mail-client/nail + sys-libs/ncurses:= + sys-libs/readline:= + dev-libs/libltdl:0 + virtual/mta + berkdb? ( sys-libs/db:= ) + bidi? ( dev-libs/fribidi ) + gdbm? ( sys-libs/gdbm ) + guile? ( dev-scheme/guile:12/22 ) + kerberos? ( virtual/krb5 ) + kyotocabinet? ( dev-db/kyotocabinet ) + ldap? ( net-nds/openldap ) + mysql? ( virtual/mysql ) + nls? ( sys-devel/gettext ) + pam? ( virtual/pam ) + postgres? ( dev-db/postgresql:= ) + python? ( ${PYTHON_DEPS} ) + sasl? ( virtual/gsasl ) + ssl? ( net-libs/gnutls:= ) + tcpd? ( sys-apps/tcp-wrappers ) + tokyocabinet? ( dev-db/tokyocabinet )" + +DEPEND="${RDEPEND} + virtual/pkgconfig" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) + servers? ( tcpd )" + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + # Disable bytecompilation of Python modules. + echo "#!/bin/sh" > build-aux/py-compile + eapply "${FILESDIR}/${P}-MH-testsuite.patch" \ + "${FILESDIR}/${P}-fix-endianness.patch" + # add missing tests so that make check doesn't fail + cp "${FILESDIR}"/{hdr,nohdr,twomsg,weed}.at "${S}"/readmsg/tests || die + if use mysql; then + sed -i -e /^INCLUDES/"s:$:$(mysql_config --include):" \ + sql/Makefile.am || die + fi + eapply_user + eautoreconf +} + +src_configure() { + append-flags -fno-strict-aliasing + + # maildir is the Gentoo default + econf MU_DEFAULT_SCHEME=maildir \ + CURSES_LIBS="$($(tc-getPKG_CONFIG) --libs ncurses)" \ + $(use_with berkdb berkeley-db) \ + $(use_with bidi fribidi) \ + $(use_enable ipv6) \ + $(use_with gdbm) \ + $(use_with sasl gsasl) \ + $(use_with guile) \ + $(use_with kerberos gssapi) \ + $(use_with ldap) \ + $(use_with mysql) \ + $(use_enable nls) \ + $(use_enable pam) \ + $(use_with postgres) \ + $(use_enable python) \ + $(use_with ssl gnutls) \ + $(use_enable static-libs static) \ + $(use_enable threads pthread) \ + $(use_with tokyocabinet) \ + $(use_with kyotocabinet) \ + $(use_with tcpd tcp-wrappers) \ + $(use_enable servers build-servers) \ + $(use_enable clients build-clients) \ + --with-mail-spool=/var/spool/mail \ + --with-readline \ + --enable-sendmail \ + --disable-debug \ + --disable-rpath +} + +src_install() { + emake DESTDIR="${D}" install + + insinto /etc + # bug 613112 + newins "${FILESDIR}/mailutils.rc" mailutils.conf + keepdir /etc/mailutils.d/ + insinto /etc/mailutils.d + doins "${FILESDIR}/mail" + + if use python; then + python_optimize + if use static-libs; then + rm -r "${D}$(python_get_sitedir)/mailutils"/*.{a,la} || die + fi + fi + + if use servers; then + newinitd "${FILESDIR}"/imap4d.initd imap4d + newinitd "${FILESDIR}"/pop3d.initd pop3d + newinitd "${FILESDIR}"/comsatd.initd comsatd + fi + + dodoc AUTHORS ChangeLog NEWS README* THANKS TODO + + # compatibility link + use clients && dosym /usr/bin/mail /bin/mail + + use static-libs || find "${D}" -name "*.la" -delete +} |