import apr-util-1.6.3-20.el10

i10cs changed/i10cs/apr-util-1.6.3-20.el10
MSVSphere Packaging Team 4 months ago
commit 82e8f846f6
Signed by: sys_gitsync
GPG Key ID: B2B0B9F29E528FE8

@ -0,0 +1 @@
8c6293a787b69986ce43bc49c7c247d4ff5fc828 SOURCES/apr-util-1.6.3.tar.bz2

1
.gitignore vendored

@ -0,0 +1 @@
SOURCES/apr-util-1.6.3.tar.bz2

@ -0,0 +1,25 @@
--- apr-util-1.2.7/Makefile.in.pkgconf
+++ apr-util-1.2.7/Makefile.in
@@ -51,7 +51,7 @@
# Create apu-config script suitable for the install tree
apu-config.out: $(APU_CONFIG)
- sed 's,^\(location=\).*$$,\1installed,' < $(APU_CONFIG) > $@
+ sed 's,^\(location=\).*$$,\1installed,;s,^\(APR_.*_DIR\)=.*,\1="$${libdir}/build",' < $(APU_CONFIG) > $@
install: $(TARGETS) install-modules
$(APR_MKDIR) $(DESTDIR)$(includedir) $(DESTDIR)$(libdir)/pkgconfig \
--- apr-util-1.2.7/apu-config.in.pkgconf
+++ apr-util-1.2.7/apu-config.in
@@ -24,9 +24,10 @@
prefix="@prefix@"
exec_prefix="@exec_prefix@"
bindir="@bindir@"
-libdir="@libdir@"
includedir="@includedir@"
+libdir=`pkg-config --variable=libdir apr-util-@APRUTIL_MAJOR_VERSION@`
+
LIBS="@APRUTIL_EXPORT_LIBS@"
INCLUDES="@APRUTIL_INCLUDES@"
LDFLAGS="@APRUTIL_LDFLAGS@"

@ -0,0 +1,10 @@
--- apr-util-1.4.1/apr-util.pc.in~ 2008-05-23 16:27:37.000000000 -0500
+++ apr-util-1.4.1/apr-util.pc.in 2013-02-07 08:55:09.717312176 -0600
@@ -9,5 +9,6 @@
Version: @APRUTIL_DOTTED_VERSION@
# assume that apr-util requires libapr of same major version
Requires: apr-@APRUTIL_MAJOR_VERSION@
-Libs: -L${libdir} -l@APRUTIL_LIBNAME@ @LDADD_ldap@ @APRUTIL_EXPORT_LIBS@
+Libs: -L${libdir} -l@APRUTIL_LIBNAME@ @LDADD_ldap@
+Libs.private: @APRUTIL_EXPORT_LIBS@
Cflags: -I${includedir}

@ -0,0 +1,123 @@
From 828d644c8eba8765843985d9293f033898ed0592 Mon Sep 17 00:00:00 2001
From: Joe Orton <jorton@apache.org>
Date: Fri, 3 Feb 2023 15:12:10 +0000
Subject: [PATCH] * memcache/apr_memcache.c (conn_connect): Allow use of IPv6
rather than forcing name resolution to IPv4 only.
Submitted by: Lubos Uhliarik <luhliari redhat.com>
Github: closes #39
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1907242 13f79535-47bb-0310-9956-ffa450edef68
---
memcache/apr_memcache.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/memcache/apr_memcache.c b/memcache/apr_memcache.c
index 5f8135c52c..18806281a4 100644
--- a/memcache/apr_memcache.c
+++ b/memcache/apr_memcache.c
@@ -290,9 +290,9 @@ static apr_status_t conn_connect(apr_memcache_conn_t *conn)
apr_status_t rv = APR_SUCCESS;
apr_sockaddr_t *sa;
#if APR_HAVE_SOCKADDR_UN
- apr_int32_t family = conn->ms->host[0] != '/' ? APR_INET : APR_UNIX;
+ apr_int32_t family = conn->ms->host[0] != '/' ? APR_UNSPEC : APR_UNIX;
#else
- apr_int32_t family = APR_INET;
+ apr_int32_t family = APR_UNSPEC;
#endif
rv = apr_sockaddr_info_get(&sa, conn->ms->host, family, conn->ms->port, 0, conn->p);
@@ -328,9 +328,9 @@ mc_conn_construct(void **conn_, void *params, apr_pool_t *pool)
apr_pool_t *tp;
apr_memcache_server_t *ms = params;
#if APR_HAVE_SOCKADDR_UN
- apr_int32_t family = ms->host[0] != '/' ? APR_INET : APR_UNIX;
+ apr_int32_t family = ms->host[0] != '/' ? APR_UNSPEC : APR_UNIX;
#else
- apr_int32_t family = APR_INET;
+ apr_int32_t family = APR_UNSPEC;
#endif
rv = apr_pool_create(&np, pool);
From 59341af138dd2c6fe9444ee9c865b769c0053bdd Mon Sep 17 00:00:00 2001
From: Joe Orton <jorton@apache.org>
Date: Tue, 27 Jun 2023 14:06:09 +0000
Subject: [PATCH] * memcache/apr_memcache.c (conn_connect, mc_conn_construct):
Fix regression in IPv4 handling in r1907242. Cycle through the address
list handling v4/v6 addresses correctly.
Submitted by: Lubos Uhliarik <luhliari redhat.com>
Github: closes #44
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1910629 13f79535-47bb-0310-9956-ffa450edef68
---
memcache/apr_memcache.c | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/memcache/apr_memcache.c b/memcache/apr_memcache.c
index 41b93a0a33..09779d91b5 100644
--- a/memcache/apr_memcache.c
+++ b/memcache/apr_memcache.c
@@ -300,14 +300,26 @@ static apr_status_t conn_connect(apr_memcache_conn_t *conn)
return rv;
}
- rv = apr_socket_timeout_set(conn->sock, 1 * APR_USEC_PER_SEC);
- if (rv != APR_SUCCESS) {
- return rv;
+ /* Cycle through address until a connect() succeeds. */
+ for (; sa; sa = sa->next) {
+ rv = apr_socket_create(&conn->sock, sa->family, SOCK_STREAM, 0, conn->p);
+ if (rv == APR_SUCCESS) {
+ rv = apr_socket_timeout_set(conn->sock, 1 * APR_USEC_PER_SEC);
+ if (rv != APR_SUCCESS) {
+ return rv;
+ }
+
+ rv = apr_socket_connect(conn->sock, sa);
+ if (rv == APR_SUCCESS) {
+ break;
+ }
+
+ apr_socket_close(conn->sock);
+ }
}
- rv = apr_socket_connect(conn->sock, sa);
- if (rv != APR_SUCCESS) {
- return rv;
+ if (!sa) {
+ return APR_ECONNREFUSED;
}
rv = apr_socket_timeout_set(conn->sock, -1);
@@ -327,11 +339,6 @@ mc_conn_construct(void **conn_, void *params, apr_pool_t *pool)
apr_pool_t *np;
apr_pool_t *tp;
apr_memcache_server_t *ms = params;
-#if APR_HAVE_SOCKADDR_UN
- apr_int32_t family = ms->host[0] != '/' ? APR_UNSPEC : APR_UNIX;
-#else
- apr_int32_t family = APR_UNSPEC;
-#endif
rv = apr_pool_create(&np, pool);
if (rv != APR_SUCCESS) {
@@ -349,13 +356,6 @@ mc_conn_construct(void **conn_, void *params, apr_pool_t *pool)
conn->p = np;
conn->tp = tp;
- rv = apr_socket_create(&conn->sock, family, SOCK_STREAM, 0, np);
-
- if (rv != APR_SUCCESS) {
- apr_pool_destroy(np);
- return rv;
- }
-
conn->buffer = apr_palloc(conn->p, BUFFER_SIZE + 1);
conn->blen = 0;
conn->ms = ms;

@ -0,0 +1,23 @@
diff --git a/crypto/apr_crypto_openssl.c b/crypto/apr_crypto_openssl.c
index 34d0559..4069cf9 100644
--- a/crypto/apr_crypto_openssl.c
+++ b/crypto/apr_crypto_openssl.c
@@ -37,7 +37,6 @@
#include <openssl/evp.h>
#include <openssl/rand.h>
-#include <openssl/engine.h>
#include <openssl/opensslv.h>
#if OPENSSL_VERSION_NUMBER >= 0x30000000
#include <openssl/macros.h>
@@ -92,6 +91,10 @@
#define APR_USE_OPENSSL_ENGINE_API 0
#endif
+#if APR_USE_OPENSSL_ENGINE_API
+#include <openssl/engine.h>
+#endif
+
#define LOG_PREFIX "apr_crypto_openssl: "
struct apr_crypto_t {

@ -0,0 +1,745 @@
commit 3df6492e1ef6f027629d81f0834636e791bdd4f3
Author: Luboš Uhliarik <luhliari@redhat.com>
Date: Wed Oct 25 12:45:58 2023 +0200
Add lmdb support
diff --git a/Makefile.in b/Makefile.in
index 811ca1d..3be9864 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -39,6 +39,7 @@ LDADD_dbd_odbc = @LDADD_dbd_odbc@
LDADD_dbm_db = @LDADD_dbm_db@
LDADD_dbm_gdbm = @LDADD_dbm_gdbm@
LDADD_dbm_ndbm = @LDADD_dbm_ndbm@
+LDADD_dbm_lmdb = @LDADD_dbm_lmdb@
LDADD_ldap = @LDADD_ldap@
LDADD_crypto_openssl = @LDADD_crypto_openssl@
LDADD_crypto_nss = @LDADD_crypto_nss@
diff --git a/build-outputs.mk b/build-outputs.mk
index a8ae1c9..4aedd4a 100644
--- a/build-outputs.mk
+++ b/build-outputs.mk
@@ -145,6 +145,12 @@ MODULE_dbm_ndbm = dbm/apr_dbm_ndbm.la
dbm/apr_dbm_ndbm.la: dbm/apr_dbm_ndbm.lo
$(LINK_MODULE) -o $@ $(OBJECTS_dbm_ndbm) $(LDADD_dbm_ndbm)
+dbm/apr_dbm_lmdb.lo: dbm/apr_dbm_lmdb.c .make.dirs include/apr_dbm.h include/private/apr_dbm_private.h
+OBJECTS_dbm_lmdb = dbm/apr_dbm_lmdb.lo
+MODULE_dbm_lmdb = dbm/apr_dbm_lmdb.la
+dbm/apr_dbm_lmdb.la: dbm/apr_dbm_lmdb.lo
+ $(LINK_MODULE) -o $@ $(OBJECTS_dbm_lmdb) $(LDADD_dbm_lmdb)
+
BUILD_DIRS = buckets crypto dbd dbm dbm/sdbm encoding hooks ldap memcache misc redis strmatch uri xlate xml
.make.dirs: $(srcdir)/build-outputs.mk
diff --git a/build.conf b/build.conf
index 86e8c34..60e6084 100644
--- a/build.conf
+++ b/build.conf
@@ -41,7 +41,7 @@ headers = include/*.h include/private/*.h
modules =
ldap crypto_openssl crypto_nss crypto_commoncrypto dbd_pgsql
dbd_sqlite2 dbd_sqlite3 dbd_oracle dbd_mysql dbd_odbc
- dbm_db dbm_gdbm dbm_ndbm
+ dbm_db dbm_gdbm dbm_ndbm dbm_lmdb
# gen_uri_delim.c
@@ -102,3 +102,6 @@ paths = ldap/apr_ldap_init.c
ldap/apr_ldap_rebind.c
target = ldap/apr_ldap.la
+[dbm_lmdb]
+paths = dbm/apr_dbm_lmdb.c
+target = dbm/apr_dbm_lmdb.la
diff --git a/build/dbm.m4 b/build/dbm.m4
index ffdbdbc..247fe18 100644
--- a/build/dbm.m4
+++ b/build/dbm.m4
@@ -498,11 +498,13 @@ dnl APU_CHECK_DBM: see what kind of DBM backend to use for apr_dbm.
dnl
AC_DEFUN([APU_CHECK_DBM], [
apu_use_sdbm=0
+ apu_use_lmdb=0
apu_use_ndbm=0
apu_use_gdbm=0
apu_use_db=0
dnl it's in our codebase
apu_have_sdbm=1
+ apu_have_lmdb=0
apu_have_gdbm=0
apu_have_ndbm=0
apu_have_db=0
@@ -514,7 +516,7 @@ AC_DEFUN([APU_CHECK_DBM], [
# Although we search for all versions up to 6.9,
# we should only include existing versions in our
# help string.
- dbm_list="sdbm, gdbm, ndbm, db, db1, db185, db2, db3, db4"
+ dbm_list="sdbm, lmdb, gdbm, ndbm, db, db1, db185, db2, db3, db4"
db_max_version=48
db_min_version=41
db_version="$db_min_version"
@@ -541,7 +543,7 @@ AC_DEFUN([APU_CHECK_DBM], [
done
AC_ARG_WITH(dbm, [APR_HELP_STRING([--with-dbm=DBM], [choose the DBM type to use.
- DBM={sdbm,gdbm,ndbm,db,db1,db185,db2,db3,db4,db4X,db5X,db6X} for some X=0,...,9])],
+ DBM={sdbm,lmdb,gdbm,ndbm,db,db1,db185,db2,db3,db4,db4X,db5X,db6X} for some X=0,...,9])],
[
if test "$withval" = "yes"; then
AC_MSG_ERROR([--with-dbm needs to specify a DBM type to use.
@@ -552,6 +554,35 @@ AC_DEFUN([APU_CHECK_DBM], [
requested=default
])
+ AC_ARG_WITH([lmdb], [APR_HELP_STRING([--with-lmdb=DIR], [enable LMDB support])],
+ [
+ apu_have_lmdb=0
+ if test "$withval" = "yes"; then
+ AC_CHECK_HEADER(lmdb.h, AC_CHECK_LIB(lmdb, mdb_dbi_open, [apu_have_lmdb=1]))
+ elif test "$withval" = "no"; then
+ apu_have_lmdb=0
+ else
+ saved_cppflags="$CPPFLAGS"
+ saved_ldflags="$LDFLAGS"
+ CPPFLAGS="$CPPFLAGS -I$withval/include"
+ LDFLAGS="$LDFLAGS -L$withval/lib "
+
+ AC_MSG_CHECKING(checking for lmdb in $withval)
+ AC_CHECK_HEADER(lmdb.h, AC_CHECK_LIB(lmdb, mdb_dbi_open, [apu_have_lmdb=1]))
+ if test "$apu_have_lmdb" != "0"; then
+ APR_ADDTO(LDFLAGS, [-L$withval/lib])
+ APR_ADDTO(INCLUDES, [-I$withval/include])
+ fi
+ CPPFLAGS="$saved_cppflags"
+ LDFLAGS="$saved_ldflags"
+ fi
+
+ if test "$requested" = "lmdb" -a "$apu_have_lmdb" = 0; then
+ AC_MSG_ERROR([LMDB requested, but not found])
+ fi
+ ])
+
+
dnl We don't pull in GDBM unless the user asks for it, since it's GPL
AC_ARG_WITH([gdbm], [APR_HELP_STRING([--with-gdbm=DIR], [enable GDBM support])],
[
@@ -668,6 +699,7 @@ AC_DEFUN([APU_CHECK_DBM], [
fi
if test "$apu_want_db" != "0"; then
+ AC_MSG_NOTICE([checking for Berkeley DB $requested in $user_places])
APU_CHECK_DB($requested, $user_places)
if test "$apu_have_db" = "0"; then
AC_ERROR(Berkeley DB not found.)
@@ -680,7 +712,7 @@ AC_DEFUN([APU_CHECK_DBM], [
fi
case "$requested" in
- sdbm | gdbm | ndbm | db)
+ lmdb | sdbm | gdbm | ndbm | db)
eval "apu_use_$requested=1"
apu_default_dbm=$requested
;;
@@ -709,11 +741,13 @@ AC_DEFUN([APU_CHECK_DBM], [
AC_MSG_CHECKING(for default DBM)
AC_MSG_RESULT($apu_default_dbm)
+ AC_SUBST(apu_use_lmdb)
AC_SUBST(apu_use_sdbm)
AC_SUBST(apu_use_gdbm)
AC_SUBST(apu_use_ndbm)
AC_SUBST(apu_use_db)
+ AC_SUBST(apu_have_lmdb)
AC_SUBST(apu_have_sdbm)
AC_SUBST(apu_have_gdbm)
AC_SUBST(apu_have_ndbm)
@@ -738,8 +772,13 @@ AC_DEFUN([APU_CHECK_DBM], [
APR_ADDTO(LDADD_dbm_ndbm, [-l$apu_ndbm_lib])
fi
+ if test "$apu_have_lmdb" = "1"; then
+ APR_ADDTO(LDADD_dbm_lmdb, [-llmdb])
+ fi
+
AC_SUBST(LDADD_dbm_db)
AC_SUBST(LDADD_dbm_gdbm)
AC_SUBST(LDADD_dbm_ndbm)
+ AC_SUBST(LDADD_dbm_lmdb)
])
diff --git a/build/dso.m4 b/build/dso.m4
index 2c5df6b..7ac6e03 100644
--- a/build/dso.m4
+++ b/build/dso.m4
@@ -60,6 +60,7 @@ yes
test $apu_have_db = 1 && objs="$objs dbm/apr_dbm_berkeleydb.lo"
test $apu_have_gdbm = 1 && objs="$objs dbm/apr_dbm_gdbm.lo"
test $apu_have_ndbm = 1 && objs="$objs dbm/apr_dbm_ndbm.lo"
+ test $apu_have_lmdb = 1 && objs="$objs dbm/apr_dbm_lmdb.lo"
test $apu_has_ldap = 1 && objs="$objs ldap/apr_ldap_init.lo"
test $apu_has_ldap = 1 && objs="$objs ldap/apr_ldap_option.lo"
test $apu_has_ldap = 1 && objs="$objs ldap/apr_ldap_rebind.lo"
@@ -81,11 +82,11 @@ yes
APRUTIL_LIBS="$APRUTIL_LIBS $LDADD_crypto_openssl $LDADD_crypto_nss $LDADD_crypto_commoncrypto"
APRUTIL_LIBS="$APRUTIL_LIBS $LDADD_dbd_pgsql $LDADD_dbd_sqlite2 $LDADD_dbd_sqlite3 $LDADD_dbd_oracle $LDADD_dbd_mysql $LDADD_dbd_odbc"
- APRUTIL_LIBS="$APRUTIL_LIBS $LDADD_dbm_db $LDADD_dbm_gdbm $LDADD_dbm_ndbm"
+ APRUTIL_LIBS="$APRUTIL_LIBS $LDADD_dbm_db $LDADD_dbm_gdbm $LDADD_dbm_ndbm $LDADD_dbm_lmdb"
APRUTIL_LIBS="$APRUTIL_LIBS $LDADD_ldap"
APRUTIL_EXPORT_LIBS="$APRUTIL_EXPORT_LIBS $LDADD_crypto_openssl $LDADD_crypto_nss $LDADD_crypto_commoncrypto"
APRUTIL_EXPORT_LIBS="$APRUTIL_EXPORT_LIBS $LDADD_dbd_pgsql $LDADD_dbd_sqlite2 $LDADD_dbd_sqlite3 $LDADD_dbd_oracle $LDADD_dbd_mysql $LDADD_dbd_odbc"
- APRUTIL_EXPORT_LIBS="$APRUTIL_EXPORT_LIBS $LDADD_dbm_db $LDADD_dbm_gdbm $LDADD_dbm_ndbm"
+ APRUTIL_EXPORT_LIBS="$APRUTIL_EXPORT_LIBS $LDADD_dbm_db $LDADD_dbm_gdbm $LDADD_dbm_ndbm $LDADD_dbm_lmdb"
APRUTIL_EXPORT_LIBS="$APRUTIL_EXPORT_LIBS $LDADD_ldap"
else
@@ -104,6 +105,7 @@ yes
test $apu_have_db = 1 && dsos="$dsos dbm/apr_dbm_db.la"
test $apu_have_gdbm = 1 && dsos="$dsos dbm/apr_dbm_gdbm.la"
test $apu_have_ndbm = 1 && dsos="$dsos dbm/apr_dbm_ndbm.la"
+ test $apu_have_lmdb = 1 && dsos="$dsos dbm/apr_dbm_lmdb.la"
test $apu_has_ldap = 1 && dsos="$dsos ldap/apr_ldap.la"
if test -n "$dsos"; then
diff --git a/dbm/apr_dbm.c b/dbm/apr_dbm.c
index 8b58f83..c846dd0 100644
--- a/dbm/apr_dbm.c
+++ b/dbm/apr_dbm.c
@@ -53,6 +53,9 @@
#elif APU_USE_SDBM
#define DBM_VTABLE apr_dbm_type_sdbm
#define DBM_NAME "sdbm"
+#elif APU_USE_LMDB
+#define DBM_VTABLE apr_dbm_type_lmdb
+#define DBM_NAME "lmdb"
#else /* Not in the USE_xDBM list above */
#error a DBM implementation was not specified
#endif
@@ -85,6 +88,9 @@ static apr_status_t dbm_open_type(apr_dbm_type_t const* * vtable,
if (!strcasecmp(type, "default")) *vtable = &DBM_VTABLE;
#if APU_HAVE_DB
else if (!strcasecmp(type, "db")) *vtable = &apr_dbm_type_db;
+#endif
+#if APU_HAVE_LMDB
+ else if (!strcasecmp(type, "lmdb")) *vtable = &apr_dbm_type_lmdb;
#endif
else if (*type && !strcasecmp(type + 1, "dbm")) {
#if APU_HAVE_GDBM
@@ -112,6 +118,7 @@ static apr_status_t dbm_open_type(apr_dbm_type_t const* * vtable,
if (!strcasecmp(type, "default")) type = DBM_NAME;
else if (!strcasecmp(type, "db")) type = "db";
+ else if (!strcasecmp(type, "lmdb")) type = "lmdb";
else if (*type && !strcasecmp(type + 1, "dbm")) {
if (*type == 'G' || *type == 'g') type = "gdbm";
else if (*type == 'N' || *type == 'n') type = "ndbm";
diff --git a/dbm/apr_dbm_lmdb.c b/dbm/apr_dbm_lmdb.c
new file mode 100644
index 0000000..fe76779
--- /dev/null
+++ b/dbm/apr_dbm_lmdb.c
@@ -0,0 +1,376 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_strings.h"
+#define APR_WANT_MEMFUNC
+#include "apr_want.h"
+#include <stdio.h>
+
+#if APR_HAVE_STDLIB_H
+#include <stdlib.h> /* for abort() */
+#endif
+
+#include "apu.h"
+
+#if APU_HAVE_LMDB
+
+#include <lmdb.h>
+
+#include "apr_dbm_private.h"
+
+typedef struct {
+ MDB_dbi dbi;
+ MDB_cursor *cursor;
+ MDB_txn *txn;
+ MDB_env *env;
+} real_file_t;
+
+
+#define APR_DBM_LMDBMODE_RO MDB_RDONLY
+#define APR_DBM_LMDBMODE_RWCREATE MDB_CREATE
+#define APR_DBM_LMDBMODE_RW (MDB_RDONLY + MDB_CREATE + 1)
+#define APR_DBM_LMDBMODE_RWTRUNC (APR_DBM_LMDBMODE_RW + 1)
+
+/* --------------------------------------------------------------------------
+**
+** UTILITY FUNCTIONS
+*/
+
+/* Map a DB error to an apr_status_t */
+static apr_status_t db2s(int dberr)
+{
+ /* MDB_* error codes are negative, which are mapped to EGENERAL;
+ * positive error codes are errno which maps directly to
+ * apr_status_t. MDB_ codes could be mapped to some status code
+ * region. */
+ return dberr < 0 ? APR_EGENERAL : dberr;
+}
+
+/* Handle the return code of an mdb_* function (dberr), store the
+ * error string for access via apr_dbm_geterror(), return translated
+ * to an apr_status_t. */
+static apr_status_t set_error(apr_dbm_t *dbm, int dberr)
+{
+ if ((dbm->errcode = dberr) == MDB_SUCCESS) {
+ dbm->errmsg = NULL;
+ }
+ else {
+ dbm->errmsg = mdb_strerror(dberr);
+ }
+
+ return db2s(dberr);
+}
+
+
+/* --------------------------------------------------------------------------
+**
+** DEFINE THE VTABLE FUNCTIONS FOR LMDB
+**
+*/
+
+#define DEFAULT_ENV_FLAGS (MDB_NOSUBDIR|MDB_NOSYNC)
+
+static apr_status_t vt_lmdb_open(apr_dbm_t **pdb, const char *pathname,
+ apr_int32_t mode, apr_fileperms_t perm,
+ apr_pool_t *pool)
+{
+ real_file_t file;
+ int dbi_open_flags = 0;
+ int dbmode = 0;
+ int truncate = 0;
+
+ *pdb = NULL;
+ switch (mode) {
+ case APR_DBM_READONLY:
+ dbmode = APR_DBM_LMDBMODE_RO;
+ break;
+ case APR_DBM_READWRITE:
+ dbmode = APR_DBM_LMDBMODE_RW;
+ break;
+ case APR_DBM_RWCREATE:
+ dbi_open_flags = APR_DBM_LMDBMODE_RWCREATE;
+ break;
+ case APR_DBM_RWTRUNC:
+ truncate = APR_DBM_LMDBMODE_RWTRUNC;
+ break;
+ default:
+ return APR_EINVAL;
+ }
+
+ {
+ int dberr;
+ file.txn = NULL;
+ file.cursor = NULL;
+ file.env = NULL;
+
+ dberr = mdb_env_create(&file.env);
+ if (dberr == 0) {
+ /* Default to 2GB map size which limits the total database
+ * size to something reasonable. */
+ dberr = mdb_env_set_mapsize(file.env, INT32_MAX);
+ }
+
+ if (dberr == 0) {
+ dberr = mdb_env_open(file.env, pathname, dbmode | DEFAULT_ENV_FLAGS, apr_posix_perms2mode(perm));
+ }
+
+ if (dberr == 0) {
+ dberr = mdb_txn_begin(file.env, NULL, dbmode, &file.txn);
+ }
+
+ if (dberr == 0) {
+ dberr = mdb_dbi_open(file.txn, NULL, dbi_open_flags, &file.dbi);
+
+ /* if mode == APR_DBM_RWTRUNC, drop database */
+ if ((dberr == 0) && truncate) {
+ dberr = mdb_drop(file.txn, file.dbi, 0);
+ if (dberr != 0) {
+ mdb_dbi_close(file.env, file.dbi);
+ }
+ }
+ }
+
+ if (dberr != 0) {
+ /* close the env handler */
+ if (file.env)
+ mdb_env_close(file.env);
+
+ return db2s(dberr);
+ }
+ }
+
+ /* we have an open database... return it */
+ *pdb = apr_pcalloc(pool, sizeof(**pdb));
+ (*pdb)->pool = pool;
+ (*pdb)->type = &apr_dbm_type_lmdb;
+ (*pdb)->file = apr_pmemdup(pool, &file, sizeof(file));
+
+ /* ### register a cleanup to close the DBM? */
+
+ return APR_SUCCESS;
+}
+
+static void vt_lmdb_close(apr_dbm_t *dbm)
+{
+ real_file_t *f = dbm->file;
+
+ /* try to commit all transactions that haven't been commited yet on close */
+ if (f->txn) {
+ mdb_txn_commit(f->txn);
+ f->txn = NULL;
+ f->cursor = NULL;
+ }
+
+ if (f->cursor) {
+ mdb_cursor_close(f->cursor);
+ f->cursor = NULL;
+ }
+
+ mdb_dbi_close(f->env, f->dbi);
+ mdb_env_close(f->env);
+
+ f->env = NULL;
+ f->dbi = 0;
+}
+
+static apr_status_t vt_lmdb_fetch(apr_dbm_t *dbm, apr_datum_t key,
+ apr_datum_t * pvalue)
+{
+ real_file_t *f = dbm->file;
+ MDB_val ckey = { 0 };
+ MDB_val rd = { 0 };
+ int dberr;
+
+ ckey.mv_data = key.dptr;
+ ckey.mv_size = key.dsize;
+
+ dberr = mdb_get(f->txn, f->dbi, &(ckey), &(rd));
+
+ /* "not found" is not an error. return zero'd value. */
+ if (dberr == MDB_NOTFOUND) {
+ memset(&rd, 0, sizeof(rd));
+ dberr = 0;
+ }
+
+ pvalue->dptr = rd.mv_data;
+ pvalue->dsize = rd.mv_size;
+
+ /* store the error info into DBM, and return a status code. Also, note
+ that *pvalue should have been cleared on error. */
+ return set_error(dbm, dberr);
+}
+
+static apr_status_t vt_lmdb_store(apr_dbm_t *dbm, apr_datum_t key,
+ apr_datum_t value)
+{
+ real_file_t *f = dbm->file;
+ int rv;
+ MDB_val ckey = { 0 };
+ MDB_val cvalue = { 0 };
+
+ ckey.mv_data = key.dptr;
+ ckey.mv_size = key.dsize;
+
+ cvalue.mv_data = value.dptr;
+ cvalue.mv_size = value.dsize;
+
+ if ((rv = mdb_put(f->txn, f->dbi, &ckey, &cvalue, 0)) == 0) {
+ /* commit transaction */
+ if ((rv = mdb_txn_commit(f->txn)) == MDB_SUCCESS) {
+ f->cursor = NULL;
+ rv = mdb_txn_begin(f->env, NULL, 0, &f->txn);
+ }
+
+ /* if mdb_txn_commit OR mdb_txn_begin fails ... */
+ if (rv != MDB_SUCCESS) {
+ f->txn = NULL;
+ }
+ }
+
+ /* store any error info into DBM, and return a status code. */
+ return set_error(dbm, rv);
+}
+
+static apr_status_t vt_lmdb_del(apr_dbm_t *dbm, apr_datum_t key)
+{
+ real_file_t *f = dbm->file;
+ int rv;
+ MDB_val ckey = { 0 };
+
+ ckey.mv_data = key.dptr;
+ ckey.mv_size = key.dsize;
+
+ if ((rv = mdb_del(f->txn, f->dbi, &ckey, NULL)) == 0) {
+ /* commit transaction */
+ if ((rv = mdb_txn_commit(f->txn)) == MDB_SUCCESS) {
+ f->cursor = NULL;
+ rv = mdb_txn_begin(f->env, NULL, 0, &f->txn);
+ }
+
+ /* if mdb_txn_commit OR mdb_txn_begin fails ... */
+ if (rv != MDB_SUCCESS) {
+ f->txn = NULL;
+ }
+ }
+
+ /* store any error info into DBM, and return a status code. */
+ return set_error(dbm, rv);
+}
+
+static int vt_lmdb_exists(apr_dbm_t *dbm, apr_datum_t key)
+{
+ real_file_t *f = dbm->file;
+ MDB_val ckey = { 0 }; /* converted key */
+ MDB_val data = { 0 };
+ int dberr;
+
+ ckey.mv_data = key.dptr;
+ ckey.mv_size = key.dsize;
+
+ dberr = mdb_get(f->txn, f->dbi, &(ckey), &(data));
+
+ /* note: the result data is "loaned" to us; we don't need to free it */
+
+ /* DB returns DB_NOTFOUND if it doesn't exist. but we want to say
+ that *any* error means it doesn't exist. */
+ return dberr == 0;
+}
+
+static apr_status_t vt_lmdb_firstkey(apr_dbm_t *dbm, apr_datum_t * pkey)
+{
+ real_file_t *f = dbm->file;
+ MDB_val first, data;
+ int dberr;
+
+ if ((dberr = mdb_cursor_open(f->txn, f->dbi, &f->cursor)) == 0) {
+ dberr = mdb_cursor_get(f->cursor, &first, &data, MDB_FIRST);
+ if (dberr == MDB_NOTFOUND) {
+ memset(&first, 0, sizeof(first));
+ mdb_cursor_close(f->cursor);
+ f->cursor = NULL;
+ dberr = 0;
+ }
+ }
+ else {
+ /* clear first if mdb_cursor_open fails */
+ memset(&first, 0, sizeof(first));
+ }
+
+ pkey->dptr = first.mv_data;
+ pkey->dsize = first.mv_size;
+
+ /* store any error info into DBM, and return a status code. */
+ return set_error(dbm, dberr);
+}
+
+static apr_status_t vt_lmdb_nextkey(apr_dbm_t *dbm, apr_datum_t * pkey)
+{
+ real_file_t *f = dbm->file;
+ MDB_val ckey, data;
+ int dberr;
+
+ ckey.mv_data = pkey->dptr;
+ ckey.mv_size = pkey->dsize;
+
+ if (f->cursor == NULL) {
+ return APR_EINVAL;
+ }
+
+ dberr = mdb_cursor_get(f->cursor, &ckey, &data, MDB_NEXT);
+ if (dberr == MDB_NOTFOUND) {
+ mdb_cursor_close(f->cursor);
+ f->cursor = NULL;
+ dberr = 0;
+ ckey.mv_data = NULL;
+ ckey.mv_size = 0;
+ }
+
+ pkey->dptr = ckey.mv_data;
+ pkey->dsize = ckey.mv_size;
+
+ /* store any error info into DBM, and return a status code. */
+ return set_error(dbm, dberr);
+}
+
+static void vt_lmdb_freedatum(apr_dbm_t *dbm, apr_datum_t data)
+{
+ /* nothing to do */
+}
+
+static void vt_lmdb_usednames(apr_pool_t *pool, const char *pathname,
+ const char **used1, const char **used2)
+{
+ *used1 = apr_pstrdup(pool, pathname);
+ *used2 = apr_pstrcat(pool, pathname, "-lock", NULL);
+}
+
+
+APU_MODULE_DECLARE_DATA const apr_dbm_type_t apr_dbm_type_lmdb = {
+ "lmdb",
+
+ vt_lmdb_open,
+ vt_lmdb_close,
+ vt_lmdb_fetch,
+ vt_lmdb_store,
+ vt_lmdb_del,
+ vt_lmdb_exists,
+ vt_lmdb_firstkey,
+ vt_lmdb_nextkey,
+ vt_lmdb_freedatum,
+ vt_lmdb_usednames
+};
+
+#endif /* APU_HAVE_LMDB */
diff --git a/include/apr_dbm.h b/include/apr_dbm.h
index ad1b4f3..fba0cdd 100644
--- a/include/apr_dbm.h
+++ b/include/apr_dbm.h
@@ -64,6 +64,7 @@ typedef struct
* @param type The type of the DBM (not all may be available at run time)
* <pre>
* db for Berkeley DB files
+ * lmdb for LMDB files
* gdbm for GDBM files
* ndbm for NDBM files
* sdbm for SDBM files (always available)
diff --git a/include/apu.h.in b/include/apu.h.in
index 184682d..cb89779 100644
--- a/include/apu.h.in
+++ b/include/apu.h.in
@@ -100,6 +100,7 @@
* we always have SDBM (it's in our codebase)
*/
#define APU_HAVE_SDBM @apu_have_sdbm@
+#define APU_HAVE_LMDB @apu_have_lmdb@
#define APU_HAVE_GDBM @apu_have_gdbm@
#define APU_HAVE_NDBM @apu_have_ndbm@
#define APU_HAVE_DB @apu_have_db@
diff --git a/include/apu.hnw b/include/apu.hnw
index 0bc3a2c..c902bae 100644
--- a/include/apu.hnw
+++ b/include/apu.hnw
@@ -86,6 +86,7 @@
#define APU_HAVE_SDBM 1
#ifndef APU_DSO_MODULE_BUILD
+#define APU_HAVE_LMDB 0
#define APU_HAVE_GDBM 0
#define APU_HAVE_NDBM 0
#define APU_HAVE_DB 0
diff --git a/include/apu.hw b/include/apu.hw
index 21fbedf..e86bdb4 100644
--- a/include/apu.hw
+++ b/include/apu.hw
@@ -108,6 +108,7 @@
#define APU_HAVE_SDBM 1
#ifndef APU_DSO_MODULE_BUILD
+#define APU_HAVE_LMDB 0
#define APU_HAVE_GDBM 0
#define APU_HAVE_NDBM 0
#define APU_HAVE_DB 0
diff --git a/include/apu.hwc b/include/apu.hwc
index 2c3fa00..6eebe0b 100644
--- a/include/apu.hwc
+++ b/include/apu.hwc
@@ -108,6 +108,7 @@
#define APU_HAVE_SDBM 1
#ifndef APU_DSO_MODULE_BUILD
+#define APU_HAVE_LMDB 0
#define APU_HAVE_GDBM 0
#define APU_HAVE_NDBM 0
#define APU_HAVE_DB 0
diff --git a/include/private/apr_dbm_private.h b/include/private/apr_dbm_private.h
index 020d3a6..e2032b4 100644
--- a/include/private/apr_dbm_private.h
+++ b/include/private/apr_dbm_private.h
@@ -112,6 +112,7 @@ struct apr_dbm_t
APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_sdbm;
APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_gdbm;
APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_ndbm;
+APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_lmdb;
APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db;
#ifdef __cplusplus
diff --git a/include/private/apu_select_dbm.h.in b/include/private/apu_select_dbm.h.in
index b69aec0..b431c61 100644
--- a/include/private/apu_select_dbm.h.in
+++ b/include/private/apu_select_dbm.h.in
@@ -21,6 +21,7 @@
** The following macros control what features APRUTIL will use
*/
#define APU_USE_SDBM @apu_use_sdbm@
+#define APU_USE_LMDB @apu_use_lmdb@
#define APU_USE_NDBM @apu_use_ndbm@
#define APU_USE_GDBM @apu_use_gdbm@
#define APU_USE_DB @apu_use_db@
diff --git a/test/testdbm.c b/test/testdbm.c
index 4f6becb..df679f4 100644
--- a/test/testdbm.c
+++ b/test/testdbm.c
@@ -153,6 +153,9 @@ static void test_dbm_traversal(abts_case *tc, apr_dbm_t *db, dbm_table_t *table)
rv = apr_dbm_nextkey(db, &key);
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+ /** avoid infinite loop */
+ if (rv != APR_SUCCESS) break;
} while (1);
for (i = 0; i < NUM_TABLE_ROWS; i++) {
@@ -170,6 +173,7 @@ static void test_dbm(abts_case *tc, void *data)
dbm_table_t *table;
const char *type = data;
const char *file = apr_pstrcat(p, "data/test-", type, NULL);
+ const char *nofile = apr_pstrcat(p, "data/no-such-test-", type, NULL);
rv = apr_dbm_open_ex(&db, type, file, APR_DBM_RWCREATE, APR_OS_DEFAULT, p);
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
@@ -198,12 +202,18 @@ static void test_dbm(abts_case *tc, void *data)
test_dbm_fetch(tc, db, table);
apr_dbm_close(db);
+
+ rv = apr_dbm_open_ex(&db, type, nofile, APR_DBM_READONLY, APR_FPROT_OS_DEFAULT, p);
+ ABTS_TRUE(tc, rv != APR_SUCCESS);
}
abts_suite *testdbm(abts_suite *suite)
{
suite = ADD_SUITE(suite);
+#if APU_HAVE_LMDB
+ abts_run_test(suite, test_dbm, "lmdb");
+#endif
#if APU_HAVE_GDBM
abts_run_test(suite, test_dbm, "gdbm");
#endif

@ -0,0 +1,486 @@
# ./pullrev.sh 1908584
http://svn.apache.org/viewvc?view=revision&revision=1908584
+ Forcibly disable ENGINE support.
--- apr-1.6.3/build/crypto.m4
+++ apr-1.6.3/build/crypto.m4
@@ -53,11 +53,11 @@
crypto_library_enabled=1
fi
done
- if test "$crypto_library_enabled" = "1"; then
+ if test "$crypto_library_enabled" = "1"; then
AC_MSG_NOTICE([Crypto was requested but no crypto library was found; autodetecting possible libraries])
else
AC_ERROR([Crypto was requested but all possible crypto libraries were disabled.])
- fi
+ fi
fi
APU_CHECK_CRYPTO_OPENSSL
@@ -91,15 +91,14 @@
if test "$withval" = "yes"; then
AC_CHECK_HEADERS(openssl/x509.h, [openssl_have_headers=1])
AC_CHECK_LIB(crypto, EVP_CIPHER_CTX_new, AC_CHECK_LIB(ssl, SSL_accept, [openssl_have_libs=1],,-lcrypto))
- if test "$openssl_have_headers" != "0" && test "$openssl_have_libs" != "0"; then
+ if test "$openssl_have_headers" = "1" && test "$openssl_have_libs" = "1"; then
apu_have_openssl=1
fi
elif test "$withval" = "no"; then
apu_have_openssl=0
else
-
openssl_CPPFLAGS="-I$withval/include"
- openssl_LDFLAGS="-L$withval/lib "
+ openssl_LDFLAGS="-L$withval/lib -L$withval/lib64"
APR_ADDTO(CPPFLAGS, [$openssl_CPPFLAGS])
APR_ADDTO(LDFLAGS, [$openssl_LDFLAGS])
@@ -107,16 +106,16 @@
AC_MSG_NOTICE(checking for openssl in $withval)
AC_CHECK_HEADERS(openssl/x509.h, [openssl_have_headers=1])
AC_CHECK_LIB(crypto, EVP_CIPHER_CTX_new, AC_CHECK_LIB(ssl, SSL_accept, [openssl_have_libs=1],,-lcrypto))
- if test "$openssl_have_headers" != "0" && test "$openssl_have_libs" != "0"; then
+ if test "$openssl_have_headers" = "1" && test "$openssl_have_libs" = "1"; then
apu_have_openssl=1
- APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib])
- APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include])
+ APR_ADDTO(APRUTIL_INCLUDES, [$openssl_CPPFLAGS])
+ APR_ADDTO(APRUTIL_LDFLAGS, [$openssl_LDFLAGS])
fi
-
- AC_CHECK_DECLS([EVP_PKEY_CTX_new], [], [],
- [#include <openssl/evp.h>])
-
fi
+ if test "$apu_have_openssl" = "1"; then
+ AC_CHECK_LIB(crypto, OPENSSL_init_crypto)
+ AC_CHECK_FUNCS([OPENSSL_init_crypto])
+ fi
], [
apu_have_openssl=0
])
@@ -130,18 +129,12 @@
apu_have_crypto=1
AC_MSG_CHECKING([for const input buffers in OpenSSL])
- AC_TRY_COMPILE([#include <openssl/rsa.h>],
- [ const unsigned char * buf;
- unsigned char * outbuf;
- RSA rsa;
-
- RSA_private_decrypt(1,
- buf,
- outbuf,
- &rsa,
- RSA_PKCS1_PADDING);
-
- ],
+ AC_TRY_COMPILE(
+ [#include <openssl/evp.h>],
+ [ EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
+ const unsigned char key[128] = {0}, iv[128] = {0};
+ EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);
+ EVP_CIPHER_CTX_free(ctx); ],
[AC_MSG_RESULT([yes])]
[AC_DEFINE([CRYPTO_OPENSSL_CONST_BUFFERS], 1, [Define that OpenSSL uses const buffers])],
[AC_MSG_RESULT([no])])
--- apr-1.6.3/crypto/apr_crypto_openssl.c
+++ apr-1.6.3/crypto/apr_crypto_openssl.c
@@ -17,6 +17,7 @@
#include "apr_lib.h"
#include "apu.h"
#include "apu_errno.h"
+#include "apu_config.h"
#include <ctype.h>
#include <assert.h>
@@ -30,24 +31,69 @@
#if APU_HAVE_CRYPTO
+#ifndef OPENSSL_API_COMPAT
+#define OPENSSL_API_COMPAT 0x10101000L /* for ENGINE API */
+#endif
+
#include <openssl/evp.h>
#include <openssl/rand.h>
#include <openssl/engine.h>
+#include <openssl/opensslv.h>
+#if OPENSSL_VERSION_NUMBER >= 0x30000000
+#include <openssl/macros.h>
+#include <openssl/core_names.h>
+#endif
-#define LOG_PREFIX "apr_crypto_openssl: "
+#if defined(LIBRESSL_VERSION_NUMBER)
-#ifndef APR_USE_OPENSSL_PRE_1_1_API
-#if defined(LIBRESSL_VERSION_NUMBER)
/* LibreSSL declares OPENSSL_VERSION_NUMBER == 2.0 but does not include most
* changes from OpenSSL >= 1.1 (new functions, macros, deprecations, ...), so
* we have to work around this...
*/
-#define APR_USE_OPENSSL_PRE_1_1_API (1)
+#define APR_USE_OPENSSL_PRE_1_0_API 0
+#if LIBRESSL_VERSION_NUMBER < 0x2070000f
+#define APR_USE_OPENSSL_PRE_1_1_API 1
#else
-#define APR_USE_OPENSSL_PRE_1_1_API (OPENSSL_VERSION_NUMBER < 0x10100000L)
+#define APR_USE_OPENSSL_PRE_1_1_API 0
#endif
+/* TODO: keep up with LibreSSL latest versions */
+#define APR_USE_OPENSSL_PRE_1_1_1_API 1
+#define APR_USE_OPENSSL_PRE_3_0_API 1
+
+#else /* defined(LIBRESSL_VERSION_NUMBER) */
+
+#if OPENSSL_VERSION_NUMBER < 0x10000000L
+#define APR_USE_OPENSSL_PRE_1_0_API 1
+#else
+#define APR_USE_OPENSSL_PRE_1_0_API 0
#endif
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#define APR_USE_OPENSSL_PRE_1_1_API 1
+#else
+#define APR_USE_OPENSSL_PRE_1_1_API 0
+#endif
+#if OPENSSL_VERSION_NUMBER < 0x10101000L
+#define APR_USE_OPENSSL_PRE_1_1_1_API 1
+#else
+#define APR_USE_OPENSSL_PRE_1_1_1_API 0
+#endif
+#if OPENSSL_VERSION_NUMBER < 0x30000000L
+#define APR_USE_OPENSSL_PRE_3_0_API 1
+#else
+#define APR_USE_OPENSSL_PRE_3_0_API 0
+#endif
+#endif /* defined(LIBRESSL_VERSION_NUMBER) */
+
+#if APR_USE_OPENSSL_PRE_3_0_API \
+ || (defined(OPENSSL_API_LEVEL) && OPENSSL_API_LEVEL < 30000)
+#define APR_USE_OPENSSL_ENGINE_API 0
+#else
+#define APR_USE_OPENSSL_ENGINE_API 0
+#endif
+
+#define LOG_PREFIX "apr_crypto_openssl: "
+
struct apr_crypto_t {
apr_pool_t *pool;
const apr_crypto_driver_t *provider;
@@ -58,7 +104,11 @@
};
struct apr_crypto_config_t {
+#if APR_USE_OPENSSL_ENGINE_API
ENGINE *engine;
+#else
+ void *engine;
+#endif
};
struct apr_crypto_key_t {
@@ -113,9 +163,21 @@
*/
static apr_status_t crypto_shutdown(void)
{
+#if HAVE_OPENSSL_INIT_CRYPTO
+ /* Openssl v1.1+ handles all termination automatically. Do
+ * nothing in this case.
+ */
+
+#else
+ /* Termination below is for legacy Openssl versions v1.0.x and
+ * older.
+ */
+
ERR_free_strings();
EVP_cleanup();
ENGINE_cleanup();
+#endif
+
return APR_SUCCESS;
}
@@ -130,6 +192,19 @@
static apr_status_t crypto_init(apr_pool_t *pool, const char *params,
const apu_err_t **result)
{
+#if HAVE_OPENSSL_INIT_CRYPTO
+ /* Openssl v1.1+ handles all initialisation automatically, apart
+ * from hints as to how we want to use the library.
+ *
+ * We tell openssl we want to include engine support.
+ */
+ OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_ALL_BUILTIN, NULL);
+
+#else
+ /* Configuration below is for legacy versions Openssl v1.0 and
+ * older.
+ */
+
#if APR_USE_OPENSSL_PRE_1_1_API
(void)CRYPTO_malloc_init();
#else
@@ -140,6 +215,7 @@
OpenSSL_add_all_algorithms();
ENGINE_load_builtin_engines();
ENGINE_register_all_complete();
+#endif
apr_pool_cleanup_register(pool, pool, crypto_shutdown_helper,
apr_pool_cleanup_null);
@@ -203,12 +279,13 @@
*/
static apr_status_t crypto_cleanup(apr_crypto_t *f)
{
-
+#if APR_USE_OPENSSL_ENGINE_API
if (f->config->engine) {
ENGINE_finish(f->config->engine);
ENGINE_free(f->config->engine);
f->config->engine = NULL;
}
+#endif
return APR_SUCCESS;
}
@@ -235,11 +312,10 @@
const apr_crypto_driver_t *provider, const char *params,
apr_pool_t *pool)
{
- apr_crypto_config_t *config = NULL;
- apr_crypto_t *f = apr_pcalloc(pool, sizeof(apr_crypto_t));
-
+ apr_crypto_t *f;
+ apr_crypto_config_t *config;
const char *engine = NULL;
-
+ apr_status_t status = APR_SUCCESS;
struct {
const char *field;
const char *value;
@@ -253,8 +329,9 @@
char **elts = NULL;
char *elt;
int i = 0, j;
- apr_status_t status;
+ *ff = NULL;
+
if (params) {
if (APR_SUCCESS != (status = apr_tokenize_to_argv(params, &elts, pool))) {
return status;
@@ -287,25 +364,45 @@
engine = fields[0].value;
}
+ f = apr_pcalloc(pool, sizeof(apr_crypto_t));
if (!f) {
return APR_ENOMEM;
}
- *ff = f;
- f->pool = pool;
- f->provider = provider;
- config = f->config = apr_pcalloc(pool, sizeof(apr_crypto_config_t));
+ f->config = config = apr_pcalloc(pool, sizeof(apr_crypto_config_t));
if (!config) {
return APR_ENOMEM;
}
+ f->pool = pool;
+ f->provider = provider;
+ /* The default/builtin "openssl" engine is the same as NULL though with
+ * openssl-3+ it's called something else, keep NULL for that name.
+ */
+ if (engine && strcasecmp(engine, "openssl") != 0) {
+#if APR_USE_OPENSSL_ENGINE_API
+ config->engine = ENGINE_by_id(engine);
+ if (!config->engine) {
+ return APR_ENOENGINE;
+ }
+ if (!ENGINE_init(config->engine)) {
+ status = APR_EINITENGINE;
+ goto cleanup;
+ }
+#else
+ return APR_ENOTIMPL;
+#endif
+ }
+
f->result = apr_pcalloc(pool, sizeof(apu_err_t));
if (!f->result) {
- return APR_ENOMEM;
+ status = APR_ENOMEM;
+ goto cleanup;
}
f->types = apr_hash_make(pool);
if (!f->types) {
- return APR_ENOMEM;
+ status = APR_ENOMEM;
+ goto cleanup;
}
apr_hash_set(f->types, "3des192", APR_HASH_KEY_STRING, &(key_types[0]));
apr_hash_set(f->types, "aes128", APR_HASH_KEY_STRING, &(key_types[1]));
@@ -314,28 +411,20 @@
f->modes = apr_hash_make(pool);
if (!f->modes) {
- return APR_ENOMEM;
+ status = APR_ENOMEM;
+ goto cleanup;
}
apr_hash_set(f->modes, "ecb", APR_HASH_KEY_STRING, &(key_modes[0]));
apr_hash_set(f->modes, "cbc", APR_HASH_KEY_STRING, &(key_modes[1]));
+ *ff = f;
apr_pool_cleanup_register(pool, f, crypto_cleanup_helper,
- apr_pool_cleanup_null);
-
- if (engine) {
- config->engine = ENGINE_by_id(engine);
- if (!config->engine) {
- return APR_ENOENGINE;
- }
- if (!ENGINE_init(config->engine)) {
- ENGINE_free(config->engine);
- config->engine = NULL;
- return APR_EINITENGINE;
- }
- }
-
+ apr_pool_cleanup_null);
return APR_SUCCESS;
+cleanup:
+ crypto_cleanup(f);
+ return status;
}
/**
@@ -435,7 +524,7 @@
return APR_ENOMEM;
}
apr_crypto_clear(p, key->key, key->keyLen);
-
+
return APR_SUCCESS;
}
--- apr-1.6.3/test/testcrypto.c
+++ apr-1.6.3/test/testcrypto.c
@@ -483,6 +483,10 @@
f1 = make(tc, pool, driver1);
f2 = make(tc, pool, driver2);
+ if (!f1 || !f2) {
+ return;
+ }
+
key1 = passphrase(tc, pool, driver1, f1, type, mode, doPad, description);
key2 = passphrase(tc, pool, driver2, f2, type, mode, doPad, description);
@@ -577,6 +581,10 @@
driver = get_openssl_driver(tc, pool);
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
keysecret(tc, pool, driver, f, APR_KEY_AES_256, APR_MODE_CBC, 1, 32,
"KEY_AES_256/MODE_CBC");
apr_pool_destroy(pool);
@@ -596,6 +604,10 @@
driver = get_nss_driver(tc, pool);
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
keysecret(tc, pool, driver, f, APR_KEY_AES_256, APR_MODE_CBC, 1, 32,
"KEY_AES_256/MODE_CBC");
apr_pool_destroy(pool);
@@ -615,6 +627,10 @@
driver = get_commoncrypto_driver(tc, pool);
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
keysecret(tc, pool, driver, f, APR_KEY_AES_256, APR_MODE_CBC, 1, 32,
"KEY_AES_256/MODE_CBC");
apr_pool_destroy(pool);
@@ -1166,6 +1182,10 @@
if (driver) {
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
apr_crypto_get_block_key_types(&types, f);
key_3des_192 = apr_hash_get(types, "3des192", APR_HASH_KEY_STRING);
@@ -1209,6 +1229,10 @@
if (driver) {
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
apr_crypto_get_block_key_types(&types, f);
key_3des_192 = apr_hash_get(types, "3des192", APR_HASH_KEY_STRING);
@@ -1252,6 +1276,10 @@
if (driver) {
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
apr_crypto_get_block_key_types(&types, f);
key_3des_192 = apr_hash_get(types, "3des192", APR_HASH_KEY_STRING);
@@ -1293,6 +1321,10 @@
if (driver) {
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
apr_crypto_get_block_key_modes(&modes, f);
mode_ecb = apr_hash_get(modes, "ecb", APR_HASH_KEY_STRING);
@@ -1326,6 +1358,10 @@
if (driver) {
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
apr_crypto_get_block_key_modes(&modes, f);
mode_ecb = apr_hash_get(modes, "ecb", APR_HASH_KEY_STRING);
@@ -1359,6 +1395,10 @@
if (driver) {
f = make(tc, pool, driver);
+ if (!f) {
+ return;
+ }
+
apr_crypto_get_block_key_modes(&modes, f);
mode_ecb = apr_hash_get(modes, "ecb", APR_HASH_KEY_STRING);

@ -0,0 +1,22 @@
# ./pullrev.sh 1908585
http://svn.apache.org/viewvc?view=revision&revision=1908585
--- apr-util-1.6.3/test/testbuckets.c
+++ apr-util-1.6.3/test/testbuckets.c
@@ -100,12 +100,12 @@
apr_size_t len = elen;
char msg[200];
- sprintf(msg, "%s: flatten brigade", ctx);
+ apr_snprintf(msg, sizeof msg, "%s: flatten brigade", ctx);
apr_assert_success(tc, msg, apr_brigade_flatten(bb, buf, &len));
- sprintf(msg, "%s: length match (%ld not %ld)", ctx,
- (long)len, (long)elen);
+ apr_snprintf(msg, sizeof msg, "%s: length match (%ld not %ld)", ctx,
+ (long)len, (long)elen);
ABTS_ASSERT(tc, msg, len == elen);
- sprintf(msg, "%s: result match", msg);
+ apr_snprintf(msg, sizeof msg, "%s: result match", ctx);
ABTS_STR_NEQUAL(tc, expect, buf, len);
free(buf);
}

@ -0,0 +1,16 @@
https://svn.apache.org/viewvc?view=revision&revision=1908586
--- apr-util/dbd/apr_dbd_odbc.c
+++ apr-util/dbd/apr_dbd_odbc.c
@@ -582,8 +582,8 @@
(textmode ? atoi(args[*argp]) : *(short *)args[*argp]);
break;
case SQL_INTEGER:
- ptr = apr_palloc(pool, sizeof(int));
- len = sizeof(int);
+ ptr = apr_palloc(pool, sizeof(long));
+ len = sizeof(long);
*(long *)ptr =
(textmode ? atol(args[*argp]) : *(long *)args[*argp]);
break;

@ -0,0 +1,18 @@
Add a missing implied int in the Berkeley DB configure probe. This
avoids build failures with future Fedora toolchain defaults.
Submitted upstream: <https://bz.apache.org/bugzilla/show_bug.cgi?id=66396>
diff --git a/build/dbm.m4 b/build/dbm.m4
index 57bd131fc3b74099..ffdbdbc0f43e04da 100644
--- a/build/dbm.m4
+++ b/build/dbm.m4
@@ -235,7 +235,7 @@ AC_DEFUN([APU_TRY_BERKELEY_DB],
#include <stdlib.h>
#include <stdio.h>
#include <$apu_try_berkeley_db_header>
-main ()
+int main ()
{
int major, minor, patch;

@ -0,0 +1,826 @@
%define aprver 1
%if 0%{?fedora} < 39 && 0%{?rhel} <= 9
%global with_lmdb 0
%else
%global with_lmdb 1
%endif
%if %{with_lmdb}
%define dbdep lmdb-devel
%else
%if 0%{?fedora} < 18 && 0%{?rhel} < 7
%define dbdep db4-devel
%else
%define dbdep libdb-devel
%endif
%endif
%if 0%{?fedora} < 27 && 0%{?rhel} <= 7
%global with_nss 1
%else
%global with_nss 0
%endif
%if 0%{?fedora} < 36 && 0%{?rhel} <= 9
%global ldaplib ldap_r
%else
%global ldaplib ldap
%endif
# Disable .la file removal since the .la file is exported via apu-config.
%global __brp_remove_la_files %nil
%define apuver 1
Summary: Apache Portable Runtime Utility library
Name: apr-util
Version: 1.6.3
Release: 20%{?dist}
# Apache-2.0: everything
# RSA-MD: https://gitlab.com/fedora/legal/fedora-legal-docs/-/merge_requests/187
# include\apr_md5.h, passwd\apr_md5.c, crypto\apr_md4.c, include\apr_md4.h
#
# LicenseRef-Fedora-Public-Domain: crypto\crypt_blowfish.c, crypto\crypt_blowfish.h
# Beerware: passwd\apr_md5.c
# OLDAP-2.7 AND BSD-4.3RENO: ldap/apr_ldap_url.c
License: Apache-2.0 AND (Beerware AND LicenseRef-Fedora-Public-Domain AND OLDAP-2.7 AND BSD-4.3RENO)
URL: https://apr.apache.org/
Source0: https://www.apache.org/dist/apr/%{name}-%{version}.tar.bz2
Patch1: apr-util-1.2.7-pkgconf.patch
Patch2: apr-util-1.4.1-private.patch
Patch3: apr-util-1.6.3-allow-ipv6.patch
Patch4: apr-util-configure-c99.patch
Patch5: apr-util-1.6.3-lmdb-support.patch
Patch6: apr-util-1.6.3-r1908584.patch
Patch7: apr-util-1.6.3-r1908585.patch
Patch8: apr-util-1.6.3-r1908586.patch
Patch9: apr-util-1.6.3-drop-engine-headers.patch
BuildRequires: gcc
BuildRequires: autoconf, apr-devel >= 1.3.0
BuildRequires: %{dbdep}, expat-devel, libuuid-devel
Recommends: apr-util-openssl%{_isa} = %{version}-%{release}
%if %{with_lmdb}
Recommends: apr-util-lmdb%{_isa} = %{version}-%{release}
%else
%if 0%{?fedora} < 27
Requires: apr-util-bdb%{?_isa} = %{version}-%{release}
%else
Recommends: apr-util-bdb%{_isa} = %{version}-%{release}
%endif
%endif
%description
The mission of the Apache Portable Runtime (APR) is to provide a
free library of C data structures and routines. This library
contains additional utility interfaces for APR; including support
for XML, LDAP, database interfaces, URI parsing and more.
%package devel
Summary: APR utility library development kit
Requires: apr-util%{?_isa} = %{version}-%{release}, apr-devel%{?_isa}, pkgconfig
Requires: expat-devel%{?_isa}, openldap-devel%{?_isa}
%description devel
This package provides the support files which can be used to
build applications using the APR utility library. The mission
of the Apache Portable Runtime (APR) is to provide a free
library of C data structures and routines.
%package pgsql
Summary: APR utility library PostgreSQL DBD driver
BuildRequires: libpq-devel
Requires: apr-util%{?_isa} = %{version}-%{release}
%description pgsql
This package provides the PostgreSQL driver for the apr-util
DBD (database abstraction) interface.
%if %{with_lmdb}
%package lmdb
Summary: APR utility library LMDB driver
Requires: apr-util%{?_isa} = %{version}-%{release}
# Remove libdb dependency from apr-util
# https://bugzilla.redhat.com/show_bug.cgi?id=1779267
Obsoletes: apr-util-bdb < 1.6.3-13
Provides: apr-util-%{aprver}(dbm)%{?_isa} = %{version}-%{release}
%description lmdb
This package provides the LMDB driver for the apr-util
DBM (database abstraction) interface.
%else
%package bdb
Summary: APR utility library Berkeley DB driver
Requires: apr-util%{?_isa} = %{version}-%{release}
Provides: apr-util-%{aprver}(dbm)%{?_isa} = %{version}-%{release}
%description bdb
This package provides the Berkeley DB driver for the apr-util
DBM (database abstraction) interface.
%endif
%package mysql
Summary: APR utility library MySQL DBD driver
BuildRequires: mariadb-connector-c-devel
Requires: apr-util%{?_isa} = %{version}-%{release}
%description mysql
This package provides the MySQL driver for the apr-util DBD
(database abstraction) interface.
%package sqlite
Summary: APR utility library SQLite DBD driver
BuildRequires: sqlite-devel >= 3.0.0
Requires: apr-util%{?_isa} = %{version}-%{release}
%description sqlite
This package provides the SQLite driver for the apr-util DBD
(database abstraction) interface.
%package odbc
Summary: APR utility library ODBC DBD driver
BuildRequires: unixODBC-devel
Requires: apr-util%{?_isa} = %{version}-%{release}
%description odbc
This package provides the ODBC driver for the apr-util DBD
(database abstraction) interface.
%package ldap
Summary: APR utility library LDAP support
BuildRequires: openldap-devel
Requires: apr-util%{?_isa} = %{version}-%{release}
%description ldap
This package provides the LDAP support for the apr-util.
%package openssl
Summary: APR utility library OpenSSL crypto support
BuildRequires: openssl-devel
Requires: apr-util%{?_isa} = %{version}-%{release}
%description openssl
This package provides the OpenSSL crypto support for the apr-util.
%if %{with_nss}
%package nss
Summary: APR utility library NSS crypto support
BuildRequires: nss-devel
BuildRequires: make
Requires: apr-util%{?_isa} = %{version}-%{release}
%description nss
This package provides the NSS crypto support for the apr-util.
%endif
%prep
%autosetup -p1
: Configured for LDAP library: %{ldaplib}
: Configured for DBM library: %{dbdep}
%build
autoheader && autoconf
# A fragile autoconf test which fails if the code trips
# any other warning; force correct result for OpenLDAP:
export ac_cv_ldap_set_rebind_proc_style=three
%configure --with-apr=%{_prefix} \
--includedir=%{_includedir}/apr-%{apuver} \
--with-ldap=%{ldaplib} --without-gdbm \
--with-sqlite3 --with-pgsql --with-mysql --with-odbc \
%if %{with_lmdb}
--with-dbm=lmdb --with-lmdb \
%else
--with-dbm=db5 --with-berkeley-db \
%endif
--without-sqlite2 \
--with-crypto --with-openssl \
%if %{with_nss}
--with-nss \
%else
--without-nss \
%endif
|| { cat config.log; exit 1; }
%{make_build}
%install
rm -rf $RPM_BUILD_ROOT
%{make_install}
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/aclocal
install -m 644 build/find_apu.m4 $RPM_BUILD_ROOT/%{_datadir}/aclocal
# Unpackaged files; remove the static libaprutil
rm -f $RPM_BUILD_ROOT%{_libdir}/aprutil.exp \
$RPM_BUILD_ROOT%{_libdir}/libapr*.a
# And remove the reference to the static libaprutil from the .la
# file.
sed -i '/^old_library/s,libapr.*\.a,,' \
$RPM_BUILD_ROOT%{_libdir}/libapr*.la
# Remove unnecessary exports from dependency_libs
sed -ri '/^dependency_libs/{s,-l(pq|sqlite[0-9]|rt|dl|uuid) ,,g}' \
$RPM_BUILD_ROOT%{_libdir}/libapr*.la
# Trim libtool DSO cruft
rm -f $RPM_BUILD_ROOT%{_libdir}/apr-util-%{apuver}/*.*a
%check
# Run the less verbose test suites
export MALLOC_CHECK_=2 MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
cd test
%{make_build} testall
# testall breaks with DBD DSO; ignore
export LD_LIBRARY_PATH=%{buildroot}/%{_libdir}/apr-util-%{apuver}
./testall -v -q
%ldconfig_scriptlets
%files
%doc CHANGES LICENSE NOTICE
%{_libdir}/libaprutil-%{apuver}.so.*
%dir %{_libdir}/apr-util-%{apuver}
%if %{with_lmdb}
%files lmdb
%{_libdir}/apr-util-%{apuver}/apr_dbm_lmdb*
%else
%files bdb
%{_libdir}/apr-util-%{apuver}/apr_dbm_db*
%endif
%files pgsql
%{_libdir}/apr-util-%{apuver}/apr_dbd_pgsql*
%files mysql
%{_libdir}/apr-util-%{apuver}/apr_dbd_mysql*
%files sqlite
%{_libdir}/apr-util-%{apuver}/apr_dbd_sqlite*
%files odbc
%{_libdir}/apr-util-%{apuver}/apr_dbd_odbc*
%files ldap
%{_libdir}/apr-util-%{apuver}/apr_ldap*
%files openssl
%{_libdir}/apr-util-%{apuver}/apr_crypto_openssl*
%if %{with_nss}
%files nss
%{_libdir}/apr-util-%{apuver}/apr_crypto_nss*
%endif
%files devel
%{_bindir}/apu-%{apuver}-config
%{_libdir}/libaprutil-%{apuver}.la
%{_libdir}/libaprutil-%{apuver}.so
%{_includedir}/apr-%{apuver}/*.h
%{_libdir}/pkgconfig/*.pc
%{_datadir}/aclocal/*.m4
%changelog
* Fri Oct 25 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 1.6.3-20
- Rebuilt for MSVSphere 10
* Tue Aug 6 2024 Joe Orton <jorton@redhat.com> - 1.6.3-20
- restore -devel dep on openldap-devel to fix mod_perl FTBFS
Related: RHEL-50386
* Mon Jul 29 2024 Luboš Uhliarik <luhliari@redhat.com> - 1.6.3-19
- Resolves: RHEL-50386 - drop unnecessary apr-util-devel dependencies
- Related: RHEL-33728 - drop ENGINE support from apr_crypto
* Tue Jun 25 2024 Joe Orton <jorton@redhat.com> - 1.6.3-18
- drop ENGINE support from apr_crypto (RHEL-33728)
- fix (harmless) gcc snprintf warning in testbuckets.c
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.6.3-17
- Bump release for June 2024 mass rebuild
* Thu Feb 8 2024 Joe Orton <jorton@redhat.com> - 1.6.3-16
- fix ODBC type mismatch (r1908586)
- use autosetup
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.3-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.3-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Dec 12 2023 Joe Orton <jorton@redhat.com> - 1.6.3-13
- re-enable LMDB by default again for Fedora >= 40 (#1779267)
* Thu Nov 2 2023 Joe Orton <jorton@redhat.com> - 1.6.3-12
- add apr-util-1(dbm) as virtual provide for dbm drivers
- disable LMDB for now
* Fri Oct 27 2023 Joe Orton <jorton@redhat.com> - 1.6.3-11
- remove Provides: for -bdb
* Tue Oct 24 2023 Luboš Uhliarik <luhliari@redhat.com> - 1.6.3-10
- add LMDB support and use it on Fedora >= 40
- Resolves: #1779267 - Remove libdb dependency from apr-util
* Tue Oct 03 2023 Luboš Uhliarik <luhliari@redhat.com> - 1.6.3-7
- SPDX migration
* Wed Aug 30 2023 Florian Weimer <fweimer@redhat.com> - 1.6.3-5
- Restore configure script port to C99
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jun 23 2023 Luboš Uhliarik <luhliari@redhat.com> - 1.6.3-3
- regression in IPv4 handling in r1907242. Cycle through the address list
handling v4/v6 addresses correctly
* Fri Feb 10 2023 Luboš Uhliarik <luhliari@redhat.com> - 1.6.3-2
- memcache/apr_memcache.c (conn_connect): Allow use of IPv6
* Thu Feb 02 2023 Luboš Uhliarik <luhliari@redhat.com> - 1.6.3-1
- new version 1.6.3
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-24
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Dec 22 2022 Florian Weimer <fweimer@redhat.com> - 1.6.1-23
- Port configure script to C99
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-22
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri May 13 2022 Joe Orton <jorton@redhat.com> - 1.6.1-21
- disable .la file removal
* Fri Jan 28 2022 Joe Orton <jorton@redhat.com> - 1.6.1-20
- fix build with OpenLDAP 2.6 (#2032706)
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-19
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 1.6.1-18
- Rebuilt with OpenSSL 3.0.0
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Feb 08 2021 Pavel Raiskup <praiskup@redhat.com> - 1.6.1-16
- rebuild for libpq ABI fix rhbz#1908268
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon May 04 2020 Tom Stellard <tstellar@redhat.com> - 1.6.1-13
- Use make_build and make_install macros
- https://docs.fedoraproject.org/en-US/packaging-guidelines/#_parallel_make
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Jan 14 2019 Björn Esser <besser82@fedoraproject.org> - 1.6.1-9
- Rebuilt for libcrypt.so.2 (#1666033)
* Wed Sep 26 2018 Joe Orton <jorton@redhat.com> - 1.6.1-8
- Recommends: -openssl and -bdb so default crypto, dbm drivers are
always available (#1491151, #1633152)
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Mar 9 2018 Bojan Smojver <bojan@rexursive.com> - 1.6.1-6
- add gcc build requirement
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Fri Jan 26 2018 Florian Weimer <fweimer@redhat.com> - 1.6.1-4
- Rebuild with new build flags embedded in apr
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 1.6.1-3
- Rebuilt for switch to libxcrypt
* Tue Dec 19 2017 Honza Horak <hhorak@redhat.com> - 1.6.1-2
- Build with mariadb-connector-c
* Wed Oct 25 2017 Luboš Uhliarik <luhliari@redhat.com> - 1.6.1-1
- new version 1.6.1
* Mon Aug 21 2017 Joe Orton <jorton@redhat.com> - 1.6.0-1
- update to 1.6.0 (#1460831)
- move bdb support to loadable DSO in apr-util-dbd subpackage
- drop NSS, freetds support
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.4-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.4-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Nov 14 2016 Joe Orton <jorton@redhat.com> - 1.5.4-4
- update for OpenSSL 1.1.0
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Mon Sep 22 2014 Jan Kaluza <jkaluza@redhat.com> - 1.5.4-1
- update to 1.5.4
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Tue Nov 26 2013 Joe Orton <jorton@redhat.com> - 1.5.3-1
- update to 1.5.3
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Thu May 09 2013 Jan Kaluza <jkaluza@redhat.com> - 1.5.2-3
- do not build with freetds when it is not available
* Tue Apr 9 2013 Joe Orton <jorton@redhat.com> - 1.5.2-2
- update for aarch64
* Tue Apr 9 2013 Joe Orton <jorton@redhat.com> - 1.5.2-1
- update to 1.5.2
* Thu Feb 07 2013 Jon Ciesla <limburgher@gmail.com> - 1.4.1-8
- Apply private patch from Merge Review BZ 225254.
* Wed Nov 07 2012 Jan Kaluza <jkaluza@redhat.com> - 1.4.1-7
- ensure we use latest libdb5 (not libdb4)
* Thu Oct 18 2012 Joe Orton <jorton@redhat.com> - 1.4.1-6
- use -lldap_r instead of -lldap
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Wed Jun 6 2012 Joe Orton <jorton@redhat.com> - 1.4.1-4
- fix crypt_r failure modes (#819650)
* Tue Apr 24 2012 Joe Orton <jorton@redhat.com> - 1.4.1-3
- apply _isa to deps
* Mon Apr 23 2012 Joe Orton <jorton@redhat.com> - 1.4.1-2
- switch to libdb-devel
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Thu Dec 15 2011 Bojan Smojver <bojan@rexursive.com> - 1.4.1-1
- bump up to 1.4.1
* Fri May 20 2011 Bojan Smojver <bojan@rexursive.com> - 1.3.12-1
- bump up to 1.3.12
* Wed May 11 2011 Bojan Smojver <bojan@rexursive.com> - 1.3.11-2
- fix crash in apr_ldap_rebind_init()
* Mon May 9 2011 Bojan Smojver <bojan@rexursive.com> - 1.3.11-1
- bump up to 1.3.11
* Wed Mar 23 2011 Dan Horák <dan@danny.cz> - 1.3.10-7
- rebuilt for mysql 5.5.10 (soname bump in libmysqlclient)
* Wed Mar 23 2011 Joe Orton <jorton@redhat.com> - 1.3.10-6
- rebuild for MySQL soname bump
* Wed Mar 2 2011 Joe Orton <jorton@redhat.com> - 1.3.10-5
- fix build
* Wed Mar 2 2011 Joe Orton <jorton@redhat.com> - 1.3.10-4
- rebuild
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.10-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Wed Dec 29 2010 Bojan Smojver <bojan@rexursive.com> - 1.3.10-2
- rebuild for MySQL 5.5.x
* Tue Oct 5 2010 Joe Orton <jorton@redhat.com> - 1.3.10-1
- update to 1.3.10
* Wed Nov 25 2009 Joe Orton <jorton@redhat.com> - 1.3.9-3
- rebuild for new BDB
* Fri Aug 21 2009 Tomas Mraz <tmraz@redhat.com> - 1.3.9-2
- rebuilt with new openssl
* Thu Aug 6 2009 Bojan Smojver <bojan@rexursive.com> - 1.3.9-1
- bump up to 1.3.9
- CVE-2009-2412
- allocator alignment fixes
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.8-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Wed Jul 15 2009 Bojan Smojver <bojan@rexursive.com> 1.3.8-2
- adjust apr-util-1.3.7-nodbmdso.patch
* Wed Jul 15 2009 Bojan Smojver <bojan@rexursive.com> 1.3.8-1
- bump up to 1.3.8
* Wed Jul 15 2009 Bojan Smojver <bojan@rexursive.com> 1.3.7-5
- BR: +libuuid-devel, -e2fsprogs-devel
* Tue Jun 9 2009 Joe Orton <jorton@redhat.com> 1.3.7-4
- disable DBM-drivers-as-DSO support
- backport r783046 from upstream
* Mon Jun 8 2009 Bojan Smojver <bojan@rexursive.com> - 1.3.7-3
- make export of LD_LIBRARY_PATH simpler
* Mon Jun 8 2009 Bojan Smojver <bojan@rexursive.com> - 1.3.7-2
- revert tests
* Mon Jun 8 2009 Bojan Smojver <bojan@rexursive.com> - 1.3.7-1
- bump up to 1.3.7
- CVE-2009-0023
- "billion laughs" fix of apr_xml_* interface
* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Fri Jan 23 2009 Joe Orton <jorton@redhat.com> 1.3.4-2
- rebuild for new MySQL
* Sat Aug 16 2008 Bojan Smojver <bojan@rexursive.com> - 1.3.4-1
- bump up to 1.3.4
- drop PostgreSQL patch, fixed upstream
* Wed Jul 16 2008 Bojan Smojver <bojan@rexursive.com> - 1.3.2-8
- beat the fuzz, rework apr-util-1.2.7-pkgconf.patch
* Wed Jul 16 2008 Bojan Smojver <bojan@rexursive.com> - 1.3.2-7
- ship find_apu.m4, fix bug #455189
* Thu Jul 10 2008 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.2-6
- rebuild for new db4-4.7
* Tue Jul 8 2008 Joe Orton <jorton@redhat.com> 1.3.2-5
- restore requires for openldap-devel from -devel
* Wed Jul 2 2008 Bojan Smojver <bojan@rexursive.com> - 1.3.2-4
- properly fix PostgreSQL detection
* Wed Jul 2 2008 Bojan Smojver <bojan@rexursive.com> - 1.3.2-3
- revert build dependencies, change from -2 didn't help
- add apr-util-1.3.2-pgsql.patch (remove pgsql_LIBS during detection)
* Wed Jul 2 2008 Bojan Smojver <bojan@rexursive.com> - 1.3.2-2
- try adding postgresql-server to build dependencies to pull some libs in
* Thu Jun 19 2008 Bojan Smojver <bojan@rexursive.com> - 1.3.2-1
- bump up to 1.3.2
* Sun Jun 1 2008 Bojan Smojver <bojan@rexursive.com> - 1.3.0-1
- bump up to 1.3.0
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.2.12-5
- Autorebuild for GCC 4.3
* Tue Dec 4 2007 Joe Orton <jorton@redhat.com> 1.2.12-4
- rebuild for OpenLDAP soname bump
* Mon Dec 3 2007 Bojan Smojver <bojan@rexursive.com> - 1.2.12-3
- remove all instances of MySQL flags being added to APRUTIL_LDFLAGS
* Tue Nov 27 2007 Bojan Smojver <bojan@rexursive.com> - 1.2.12-1
- bump up to 1.2.12
- drop MySQL DBD driver, shipped upstream
- adjust various patches to apply
- rework tests in %%check (1.2.x got tests from trunk)
* Mon Sep 24 2007 Jesse Keating <jkeating@redhat.com> - 1.2.10-2
- Rebuild for upgrade path (add dist since that's now on F-7 branch)
* Sun Sep 9 2007 Bojan Smojver <bojan@rexursive.com> 1.2.10-1
- bump up to 1.2.10
- pick up newly checked in MySQL DBD driver directly from ASF
- remove dbdopen patch (fixed upstream)
- remove xmlns patch (fixed upstream)
- remove autoexpat patch (fixed upstream)
* Sun Sep 2 2007 Joe Orton <jorton@redhat.com> 1.2.8-12
- rebuild for fixed APR 32-bit ABI
- remove sqlite driver from main package (#274521)
* Wed Aug 22 2007 Joe Orton <jorton@redhat.com> 1.2.8-11
- rebuild for expat soname bump
* Tue Aug 21 2007 Joe Orton <jorton@redhat.com> 1.2.8-10
- fix License
* Wed Aug 8 2007 Joe Orton <jorton@redhat.com> 1.2.8-9
- add rewrite of expat autoconf code (upstream r493791)
- fix build for new glibc open()-as-macro
- split out sqlite subpackage
* Tue Jul 3 2007 Joe Orton <jorton@redhat.com> 1.2.8-8
- add fix for attribute namespace handling in apr_xml (PR 41908)
* Thu Apr 5 2007 Joe Orton <jorton@redhat.com> 1.2.8-7
- remove old Conflicts, doxygen BR (#225254)
* Fri Mar 23 2007 Joe Orton <jorton@redhat.com> 1.2.8-6
- add DBD DSO lifetime fix (r521327)
* Thu Mar 22 2007 Joe Orton <jorton@redhat.com> 1.2.8-5
- drop doxygen documentation (which caused multilib conflicts)
* Wed Feb 28 2007 Joe Orton <jorton@redhat.com> 1.2.8-4
- add mysql driver in -mysql subpackage (Bojan Smojver, #222237)
* Tue Feb 27 2007 Joe Orton <jorton@redhat.com> 1.2.8-3
- build DBD drivers as DSOs (w/Bojan Smojver, #192922)
- split out pgsql driver into -pgsql subpackage
* Tue Dec 5 2006 Joe Orton <jorton@redhat.com> 1.2.8-2
- update to 1.2.8, pick up new libpq soname
* Fri Dec 1 2006 Joe Orton <jorton@redhat.com> 1.2.7-5
- really rebuild for db45
* Sat Nov 11 2006 Joe Orton <jorton@redhat.com> 1.2.7-4
- add support for BDB 4.5 from upstream, rebuild
* Wed Jul 19 2006 Joe Orton <jorton@redhat.com> 1.2.7-3
- fix buildconf with autoconf 2.60
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 1.2.7-2.1
- rebuild
* Tue May 2 2006 Joe Orton <jorton@redhat.com> 1.2.7-2
- update to 1.2.7
- use pkg-config in apu-1-config to make it libdir-agnostic
* Thu Apr 6 2006 Joe Orton <jorton@redhat.com> 1.2.6-2
- update to 1.2.6
- define LDAP_DEPRECATED in apr_ldap.h (r391985, #188073)
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 1.2.2-4.2
- bump again for double-long bug on ppc(64)
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 1.2.2-4.1
- rebuilt for new gcc4.1 snapshot and glibc changes
* Mon Jan 30 2006 Joe Orton <jorton@redhat.com> 1.2.2-4
- rebuild to drop reference to libexpat.la
* Wed Jan 18 2006 Joe Orton <jorton@redhat.com> 1.2.2-3
- disable sqlite2 support
- BuildRequire e2fsprogs-devel
- enable malloc paranoia in %%check
* Tue Jan 3 2006 Jesse Keating <jkeating@redhat.com> 1.2.2-2.2
- rebuilt again
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
- rebuilt
* Tue Dec 6 2005 Joe Orton <jorton@redhat.com> 1.2.2-2
- trim exports from .la file/--libs output (#174924)
* Fri Nov 25 2005 Joe Orton <jorton@redhat.com> 1.2.2-1
- update to 1.2.2
* Thu Oct 20 2005 Joe Orton <jorton@redhat.com> 0.9.7-3
- fix epoch again
* Thu Oct 20 2005 Joe Orton <jorton@redhat.com> 0.9.7-2
- update to 0.9.7
- drop static libs (#170051)
* Tue Jul 26 2005 Joe Orton <jorton@redhat.com> 0.9.6-3
- add FILE bucket fix for truncated files (#159191)
- add epoch to dependencies
* Fri Mar 4 2005 Joe Orton <jorton@redhat.com> 0.9.6-2
- rebuild
* Wed Feb 9 2005 Joe Orton <jorton@redhat.com> 0.9.6-1
- update to 0.9.6
* Wed Jan 19 2005 Joe Orton <jorton@redhat.com> 0.9.5-3
- restore db-4.3 detection lost in 0.9.5 upgrade
* Wed Jan 19 2005 Joe Orton <jorton@redhat.com> 0.9.5-2
- rebuild
* Mon Nov 22 2004 Joe Orton <jorton@redhat.com> 0.9.5-1
- update to 0.9.5
* Thu Nov 11 2004 Jeff Johnson <jbj@jbj.org> 0.9.4-19
- actually explicitly check for and detect db-4.3.
* Thu Nov 11 2004 Jeff Johnson <jbj@jbj.org> 0.9.4-18
- rebuild against db-4.3.21.
* Fri Sep 17 2004 Joe Orton <jorton@redhat.com> 0.9.4-17
- add security fix for CAN-2004-0786
* Sat Jun 19 2004 Joe Orton <jorton@redhat.com> 0.9.4-16
- have -devel require matching release of apr-util
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Thu Apr 1 2004 Joe Orton <jorton@redhat.com> 0.9.4-14
- fix use of SHA1 passwords (#119651)
* Tue Mar 30 2004 Joe Orton <jorton@redhat.com> 0.9.4-13
- remove fundamentally broken check_sbcs() from xlate code
* Fri Mar 19 2004 Joe Orton <jorton@redhat.com> 0.9.4-12
- tweak xlate fix
* Fri Mar 19 2004 Joe Orton <jorton@redhat.com> 0.9.4-11
- rebuild with xlate fixes and tests enabled
* Tue Mar 02 2004 Elliot Lee <sopwith@redhat.com> 0.9.4-10.1
- rebuilt
* Tue Mar 2 2004 Joe Orton <jorton@redhat.com> 0.9.4-10
- rename sdbm_* symbols to apu__sdbm_*
* Mon Feb 16 2004 Joe Orton <jorton@redhat.com> 0.9.4-9
- fix sdbm apr_dbm_exists() on s390x/ppc64
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com> 0.9.4-8
- rebuilt
* Thu Feb 5 2004 Joe Orton <jorton@redhat.com> 0.9.4-7
- fix warnings from use of apr_optional*.h with gcc 3.4
* Thu Jan 29 2004 Joe Orton <jorton@redhat.com> 0.9.4-6
- drop gdbm support
* Thu Jan 8 2004 Joe Orton <jorton@redhat.com> 0.9.4-5
- fix DB library detection
* Sat Dec 13 2003 Jeff Johnson <jbj@jbj.org> 0.9.4-4
- rebuild against db-4.2.52.
* Mon Oct 13 2003 Jeff Johnson <jbj@jbj.org> 0.9.4-3
- rebuild against db-4.2.42.
* Mon Oct 6 2003 Joe Orton <jorton@redhat.com> 0.9.4-2
- fix 'apu-config --apu-la-file' output
* Mon Oct 6 2003 Joe Orton <jorton@redhat.com> 0.9.4-1
- update to 0.9.4.
* Tue Jul 22 2003 Nalin Dahyabhai <nalin@redhat.com> 0.9.3-10
- rebuild
* Mon Jul 7 2003 Joe Orton <jorton@redhat.com> 0.9.3-9
- rebuild
- don't run testuuid test because of #98677
* Thu Jul 3 2003 Joe Orton <jorton@redhat.com> 0.9.3-8
- rebuild
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Tue May 20 2003 Joe Orton <jorton@redhat.com> 0.9.3-6
- fix to detect crypt_r correctly (CAN-2003-0195)
* Thu May 15 2003 Joe Orton <jorton@redhat.com> 0.9.3-5
- fix to try linking against -ldb first (#90917)
- depend on openldap, gdbm, db4, expat appropriately.
* Tue May 13 2003 Joe Orton <jorton@redhat.com> 0.9.3-4
- rebuild
* Wed May 7 2003 Joe Orton <jorton@redhat.com> 0.9.3-3
- make devel package conflict with old subversion-devel
- run the less crufty parts of the test suite
* Tue Apr 29 2003 Joe Orton <jorton@redhat.com> 0.9.3-2
- run ldconfig in post/postun
* Mon Apr 28 2003 Joe Orton <jorton@redhat.com> 0.9.3-1
- initial build
Loading…
Cancel
Save