apr-util protection against htpasswd dos
Hanno Böck

Hanno Böck commited on 2016-11-30 12:41:24
Zeige 4 geänderte Dateien mit 165 Einfügungen und 0 Löschungen.

... ...
@@ -0,0 +1,4 @@
1
+AUX apr-util-1.5.3-sysroot.patch 1234 SHA256 752ee44d3e9e39e4cba824556f829776a46e4f5e64d4f359de781d3bfd3a414f SHA512 44ee2a9cf61587f05d43976d40023f6313b310c3eeb37299840445e3faec7f0352367875f515b21d3b1fcdc8c082d8584a21cf8187deb1f6f69187c14f84f0b7 WHIRLPOOL 2017ccccfade6e99a490781100a7ca2ee1901a93b791db78291e3d7850e9916d183084abc6f46b2a80ffb451dfb5f1e999189f9ce6f994b51146563bef52a7af
2
+AUX apr-util-limit-bcrypt-dos.patch 533 SHA256 81193464f5be244d5cb2496e5d8800f09ce6302ac8f3826bc89354098376481a SHA512 1dbe3ed63a399241fcc273ed6c36963e237bf3e6ce17d0d9fa4b6ceb1cbca1b7fa3fef69c95edaecc9f32843698c961b2875f80c80b9c84768e6f42461e023e1 WHIRLPOOL 0672c3b8cca7aafd4c2d51d2378896bfd4f201000fa715f8a1c76735254b454f9820f241888cb0ad02034283abd73504e815068b1c61e517317c412349289387
3
+DIST apr-util-1.5.4.tar.bz2 694427 SHA256 a6cf327189ca0df2fb9d5633d7326c460fe2b61684745fd7963e79a6dd0dc82e SHA512 ca877d8e444218c4ba0f28063ee075ddcd6c0a487b692dc80ef442fe775ec4eeb337c6957853772e8082e27edcb450d7e909c2c6c3ab4a95bbf0a5ee5ea4a2d1 WHIRLPOOL bc4ce82785513f4bf2207bb26758abc79e6bfef62a57d3e2ead570abc618b321c302390b9dcd8eab1ec44a9e5d398c2cc4d35af2549636e20d7c20678725ac2e
4
+EBUILD apr-util-1.5.4.ebuild 3347 SHA256 5d823e60f83a105ce1baa7693b6de35fe1af7192baf843ac3e2812729aef3cbc SHA512 87bbffa64c60b850e6c886674631ae80865b9e75a1d224420d07a8e943c9a3ca70f0ddf36a212c518cc406d6ab4f87e51ff32ffd7199b6f8932785f24eb2b2ff WHIRLPOOL ea55b6a1291ddc3405db6f4c46ea2c151ecd4263d3b5ecd2d6818742ae3a61f085ac65e1431d6d20e94f1f19cc2fa369ed61a1fb38b4a662e3ed07b7bf9a9156
... ...
@@ -0,0 +1,114 @@
1
+# Copyright 1999-2015 Gentoo Foundation
2
+# Distributed under the terms of the GNU General Public License v2
3
+# $Id$
4
+
5
+EAPI="4"
6
+
7
+# Usually apr-util has the same PV as apr, but in case of security fixes, this may change.
8
+# APR_PV="${PV}"
9
+APR_PV="1.4.6"
10
+
11
+inherit autotools db-use eutils libtool multilib toolchain-funcs
12
+
13
+DESCRIPTION="Apache Portable Runtime Utility Library"
14
+HOMEPAGE="http://apr.apache.org/"
15
+SRC_URI="mirror://apache/apr/${P}.tar.bz2"
16
+
17
+LICENSE="Apache-2.0"
18
+SLOT="1"
19
+KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~ppc-aix ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
20
+IUSE="berkdb doc freetds gdbm ldap mysql nss odbc openssl postgres sqlite static-libs"
21
+#RESTRICT="test"
22
+
23
+RDEPEND="dev-libs/expat
24
+	>=dev-libs/apr-${APR_PV}:1
25
+	berkdb? ( >=sys-libs/db-4 )
26
+	freetds? ( dev-db/freetds )
27
+	gdbm? ( sys-libs/gdbm )
28
+	ldap? ( =net-nds/openldap-2* )
29
+	mysql? ( =virtual/mysql-5* )
30
+	nss? ( dev-libs/nss )
31
+	odbc? ( dev-db/unixODBC )
32
+	openssl? ( dev-libs/openssl )
33
+	postgres? ( dev-db/postgresql )
34
+	sqlite? ( dev-db/sqlite:3 )"
35
+DEPEND="${RDEPEND}
36
+	>=sys-devel/libtool-2.4.2
37
+	doc? ( app-doc/doxygen )"
38
+
39
+DOCS=(CHANGES NOTICE README)
40
+
41
+src_prepare() {
42
+	epatch "${FILESDIR}"/${PN}-1.5.3-sysroot.patch #385775
43
+	epatch "${FILESDIR}"/apr-util-limit-bcrypt-dos.patch
44
+	eautoreconf
45
+	elibtoolize
46
+}
47
+
48
+src_configure() {
49
+	local myconf=()
50
+
51
+	tc-is-static-only && myconf+=( --disable-util-dso )
52
+
53
+	if use berkdb; then
54
+		local db_version
55
+		db_version="$(db_findver sys-libs/db)" || die "Unable to find Berkeley DB version"
56
+		db_version="$(db_ver_to_slot "${db_version}")"
57
+		db_version="${db_version/\./}"
58
+		myconf+=(
59
+			--with-dbm=db${db_version}
60
+			# We use $T for the libdir because otherwise it'd simply be the normal
61
+			# system libdir.  That's pointless as the compiler will search it for
62
+			# us already.  This makes cross-compiling and such easier.
63
+			--with-berkeley-db="${SYSROOT}$(db_includedir 2>/dev/null):${T}"
64
+		)
65
+	else
66
+		myconf+=( --without-berkeley-db )
67
+	fi
68
+
69
+	if use nss || use openssl ; then
70
+		myconf+=( --with-crypto ) # 518708
71
+	fi
72
+
73
+	econf \
74
+		--datadir="${EPREFIX}"/usr/share/apr-util-1 \
75
+		--with-apr="${SYSROOT}${EPREFIX}"/usr \
76
+		--with-expat="${EPREFIX}"/usr \
77
+		--without-sqlite2 \
78
+		$(use_with freetds) \
79
+		$(use_with gdbm) \
80
+		$(use_with ldap) \
81
+		$(use_with mysql) \
82
+		$(use_with nss) \
83
+		$(use_with odbc) \
84
+		$(use_with openssl) \
85
+		$(use_with postgres pgsql) \
86
+		$(use_with sqlite sqlite3) \
87
+		"${myconf[@]}"
88
+	# Use the current env build settings rather than whatever apr was built with.
89
+	sed -i -r \
90
+		-e "/^(apr_builddir|apr_builders|top_builddir)=/s:=:=${SYSROOT}:" \
91
+		-e "/^CC=/s:=.*:=$(tc-getCC):" \
92
+		-e '/^(C|CPP|CXX|LD)FLAGS=/d' \
93
+		-e '/^LTFLAGS/s:--silent::' \
94
+		build/rules.mk || die
95
+}
96
+
97
+src_compile() {
98
+	emake
99
+	use doc && emake dox
100
+}
101
+
102
+src_install() {
103
+	default
104
+
105
+	find "${ED}" -name "*.la" -delete
106
+	find "${ED}usr/$(get_libdir)/apr-util-${SLOT}" -name "*.a" -delete
107
+	use static-libs || find "${ED}" -name "*.a" -delete
108
+
109
+	use doc && dohtml -r docs/dox/html/*
110
+
111
+	# This file is only used on AIX systems, which Gentoo is not,
112
+	# and causes collisions between the SLOTs, so remove it.
113
+	rm -f "${ED}usr/$(get_libdir)/aprutil.exp"
114
+}
... ...
@@ -0,0 +1,36 @@
1
+https://bugs.gentoo.org/385775
2
+
3
+utilize $SYSROOT to find the right includedir tree
4
+
5
+drop the -L/-R paths since we know our libdir is the standard path which
6
+the compiler already knows how to locate
7
+
8
+--- a/apu-config.in
9
++++ b/apu-config.in
10
+@@ -25,7 +25,7 @@ prefix="@prefix@"
11
+ exec_prefix="@exec_prefix@"
12
+ bindir="@bindir@"
13
+ libdir="@libdir@"
14
+-includedir="@includedir@"
15
++includedir="${SYSROOT}@includedir@"
16
+ 
17
+ LIBS="@APRUTIL_EXPORT_LIBS@"
18
+ INCLUDES="@APRUTIL_INCLUDES@"
19
+@@ -166,7 +166,7 @@ while test $# -gt 0; do
20
+     --link-ld)
21
+     if test "$location" = "installed"; then
22
+         ### avoid using -L if libdir is a "standard" location like /usr/lib
23
+-        flags="$flags -L$libdir -l$APRUTIL_LIBNAME"
24
++        flags="$flags -l$APRUTIL_LIBNAME"
25
+     else
26
+         flags="$flags -L$APU_BUILD_DIR -l$APRUTIL_LIBNAME"
27
+     fi
28
+@@ -182,7 +182,7 @@ while test $# -gt 0; do
29
+         ### avoid using -L if libdir is a "standard" location like /usr/lib
30
+         # Since the user is specifying they are linking with libtool, we
31
+         # *know* that -R will be recognized by libtool.
32
+-        flags="$flags -L$libdir -R$libdir -l$APRUTIL_LIBNAME"
33
++        flags="$flags -l$APRUTIL_LIBNAME"
34
+     else
35
+         flags="$flags $LA_FILE"
36
+     fi
... ...
@@ -0,0 +1,11 @@
1
+--- a/crypto/crypt_blowfish.c	2012-07-06 13:41:24.000000000 +0200
2
++++ b/crypto/crypt_blowfish.c	2016-09-21 17:06:32.993929364 +0200
3
+@@ -877,7 +877,7 @@ char *_crypt_gensalt_blowfish_rn(const c
4
+ 	const char *input, int size, char *output, int output_size)
5
+ {
6
+ 	if (size < 16 || output_size < 7 + 22 + 1 ||
7
+-	    (count && (count < 4 || count > 31)) ||
8
++	    (count && (count < 4 || count > 17)) ||
9
+ 	    prefix[0] != '$' || prefix[1] != '2' ||
10
+ 	    (prefix[2] != 'a' && prefix[2] != 'y')) {
11
+ 		if (output_size > 0) output[0] = '\0';
0 12