!34 update to 1.7.4
From: @pshysimon Reviewed-by: @dillon_chen Signed-off-by: @dillon_chen
This commit is contained in:
commit
df7df4dcec
@ -1,103 +0,0 @@
|
|||||||
From 6df2b8ec805230db90677b54afe2d122cf0bd8c8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rainer Jung <rjung@apache.org>
|
|
||||||
Date: Wed, 17 Jul 2019 11:43:58 +0000
|
|
||||||
Subject: [PATCH 05/10] Fix pool debugging output so that creation events are
|
|
||||||
always emitted before allocation events and subpool destruction events are
|
|
||||||
emitted on pool clear/destroy for proper accounting.
|
|
||||||
|
|
||||||
Backport of r1675967 from trunk resp. r1863202 from 1.7.x.
|
|
||||||
|
|
||||||
|
|
||||||
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.6.x@1863211 13f79535-47bb-0310-9956-ffa450edef68
|
|
||||||
---
|
|
||||||
CHANGES | 4 ++++
|
|
||||||
memory/unix/apr_pools.c | 27 +++++++++++++--------------
|
|
||||||
2 files changed, 17 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c
|
|
||||||
index 17fadb42a..9fdd00129 100644
|
|
||||||
--- a/memory/unix/apr_pools.c
|
|
||||||
+++ b/memory/unix/apr_pools.c
|
|
||||||
@@ -1886,10 +1886,6 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
|
|
||||||
|
|
||||||
apr_pool_check_lifetime(pool);
|
|
||||||
|
|
||||||
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
- apr_pool_log_event(pool, "CLEAR", file_line, 1);
|
|
||||||
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
|
|
||||||
-
|
|
||||||
#if APR_HAS_THREADS
|
|
||||||
if (pool->parent != NULL)
|
|
||||||
mutex = pool->parent->mutex;
|
|
||||||
@@ -1905,6 +1901,10 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
|
|
||||||
|
|
||||||
pool_clear_debug(pool, file_line);
|
|
||||||
|
|
||||||
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
+ apr_pool_log_event(pool, "CLEAR", file_line, 1);
|
|
||||||
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
|
|
||||||
+
|
|
||||||
#if APR_HAS_THREADS
|
|
||||||
/* If we had our own mutex, it will have been destroyed by
|
|
||||||
* the registered cleanups. Recreate the mutex. Unlock
|
|
||||||
@@ -1929,12 +1929,12 @@ static void pool_destroy_debug(apr_pool_t *pool, const char *file_line)
|
|
||||||
{
|
|
||||||
apr_pool_check_lifetime(pool);
|
|
||||||
|
|
||||||
+ pool_clear_debug(pool, file_line);
|
|
||||||
+
|
|
||||||
#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
apr_pool_log_event(pool, "DESTROY", file_line, 1);
|
|
||||||
#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
|
|
||||||
|
|
||||||
- pool_clear_debug(pool, file_line);
|
|
||||||
-
|
|
||||||
/* Remove the pool from the parents child list */
|
|
||||||
if (pool->parent) {
|
|
||||||
#if APR_HAS_THREADS
|
|
||||||
@@ -2043,6 +2043,9 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
|
|
||||||
pool->owner_proc = (apr_os_proc_t)getnlmhandle();
|
|
||||||
#endif /* defined(NETWARE) */
|
|
||||||
|
|
||||||
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
+ apr_pool_log_event(pool, "CREATE", file_line, 1);
|
|
||||||
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
|
|
||||||
|
|
||||||
if (parent == NULL || parent->allocator != allocator) {
|
|
||||||
#if APR_HAS_THREADS
|
|
||||||
@@ -2072,10 +2075,6 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
|
|
||||||
|
|
||||||
*newpool = pool;
|
|
||||||
|
|
||||||
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
- apr_pool_log_event(pool, "CREATE", file_line, 1);
|
|
||||||
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
|
|
||||||
-
|
|
||||||
return APR_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2129,6 +2128,10 @@ APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpoo
|
|
||||||
}
|
|
||||||
pool->allocator = pool_allocator;
|
|
||||||
|
|
||||||
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
+ apr_pool_log_event(pool, "CREATEU", file_line, 1);
|
|
||||||
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
|
|
||||||
+
|
|
||||||
if (pool->allocator != allocator) {
|
|
||||||
#if APR_HAS_THREADS
|
|
||||||
apr_status_t rv;
|
|
||||||
@@ -2151,10 +2154,6 @@ APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpoo
|
|
||||||
|
|
||||||
*newpool = pool;
|
|
||||||
|
|
||||||
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
- apr_pool_log_event(pool, "CREATEU", file_line, 1);
|
|
||||||
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
|
|
||||||
-
|
|
||||||
return APR_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
From 39611db20eea29a751162c43f0df61b05f48b00f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rainer Jung <rjung@apache.org>
|
|
||||||
Date: Wed, 17 Jul 2019 11:42:15 +0000
|
|
||||||
Subject: [PATCH 03/10] Pool debugging fixes
|
|
||||||
|
|
||||||
- avoid using a destroyed mutex in apr_pool_clear()
|
|
||||||
- if we create a sub-pool, we don't need to own the pool.
|
|
||||||
|
|
||||||
Backport of r1481186 from trunk resp. r1863200 from 1.7.x.
|
|
||||||
|
|
||||||
|
|
||||||
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.6.x@1863209 13f79535-47bb-0310-9956-ffa450edef68
|
|
||||||
---
|
|
||||||
memory/unix/apr_pools.c | 7 ++++++-
|
|
||||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c
|
|
||||||
index 614919ede..cd6b17811 100644
|
|
||||||
--- a/memory/unix/apr_pools.c
|
|
||||||
+++ b/memory/unix/apr_pools.c
|
|
||||||
@@ -1909,6 +1909,11 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
|
|
||||||
* the mutex we obtained above.
|
|
||||||
*/
|
|
||||||
if (mutex != pool->mutex) {
|
|
||||||
+ /*
|
|
||||||
+ * Prevent apr_palloc() in apr_thread_mutex_create() from trying to
|
|
||||||
+ * use the destroyed mutex.
|
|
||||||
+ */
|
|
||||||
+ pool->mutex = NULL;
|
|
||||||
(void)apr_thread_mutex_create(&pool->mutex,
|
|
||||||
APR_THREAD_MUTEX_NESTED, pool);
|
|
||||||
|
|
||||||
@@ -1985,7 +1990,7 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
|
|
||||||
parent = global_pool;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
- apr_pool_check_integrity(parent);
|
|
||||||
+ apr_pool_check_lifetime(parent);
|
|
||||||
|
|
||||||
if (!allocator)
|
|
||||||
allocator = parent->allocator;
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,87 +0,0 @@
|
|||||||
From 68710d39de65fa4f16c890110342a249f60a66fa Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rainer Jung <rjung@apache.org>
|
|
||||||
Date: Wed, 17 Jul 2019 11:41:21 +0000
|
|
||||||
Subject: [PATCH 02/10] Split apr_pool_check_integrity() into two parts
|
|
||||||
|
|
||||||
Run the pool owner check part only after pre-cleanups have been run, in
|
|
||||||
order to give them a chance to kill of any threads that may still be
|
|
||||||
accessing the pool.
|
|
||||||
|
|
||||||
Backport of r1460184 from trunk resp. r1863199 from 1.7.x.
|
|
||||||
|
|
||||||
|
|
||||||
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.6.x@1863208 13f79535-47bb-0310-9956-ffa450edef68
|
|
||||||
---
|
|
||||||
memory/unix/apr_pools.c | 20 +++++++++++++++++---
|
|
||||||
1 file changed, 17 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c
|
|
||||||
index 3361f7a7d..614919ede 100644
|
|
||||||
--- a/memory/unix/apr_pools.c
|
|
||||||
+++ b/memory/unix/apr_pools.c
|
|
||||||
@@ -1594,7 +1594,7 @@ static int apr_pool_is_child_of(apr_pool_t *pool, apr_pool_t *parent)
|
|
||||||
}
|
|
||||||
#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */
|
|
||||||
|
|
||||||
-static void apr_pool_check_integrity(apr_pool_t *pool)
|
|
||||||
+static void apr_pool_check_lifetime(apr_pool_t *pool)
|
|
||||||
{
|
|
||||||
/* Rule of thumb: use of the global pool is always
|
|
||||||
* ok, since the only user is apr_pools.c. Unless
|
|
||||||
@@ -1618,7 +1618,10 @@ static void apr_pool_check_integrity(apr_pool_t *pool)
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */
|
|
||||||
+}
|
|
||||||
|
|
||||||
+static void apr_pool_check_owner(apr_pool_t *pool)
|
|
||||||
+{
|
|
||||||
#if (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER)
|
|
||||||
#if APR_HAS_THREADS
|
|
||||||
if (!apr_os_thread_equal(pool->owner, apr_os_thread_current())) {
|
|
||||||
@@ -1632,6 +1635,11 @@ static void apr_pool_check_integrity(apr_pool_t *pool)
|
|
||||||
#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER) */
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void apr_pool_check_integrity(apr_pool_t *pool)
|
|
||||||
+{
|
|
||||||
+ apr_pool_check_lifetime(pool);
|
|
||||||
+ apr_pool_check_owner(pool);
|
|
||||||
+}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialization (debug)
|
|
||||||
@@ -1820,6 +1828,12 @@ static void pool_clear_debug(apr_pool_t *pool, const char *file_line)
|
|
||||||
run_cleanups(&pool->pre_cleanups);
|
|
||||||
pool->pre_cleanups = NULL;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Now that we have given the pre cleanups the chance to kill of any
|
|
||||||
+ * threads using the pool, the owner must be correct.
|
|
||||||
+ */
|
|
||||||
+ apr_pool_check_owner(pool);
|
|
||||||
+
|
|
||||||
/* Destroy the subpools. The subpools will detach themselves from
|
|
||||||
* this pool thus this loop is safe and easy.
|
|
||||||
*/
|
|
||||||
@@ -1868,7 +1882,7 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
|
|
||||||
apr_thread_mutex_t *mutex = NULL;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- apr_pool_check_integrity(pool);
|
|
||||||
+ apr_pool_check_lifetime(pool);
|
|
||||||
|
|
||||||
#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
apr_pool_log_event(pool, "CLEAR", file_line, 1);
|
|
||||||
@@ -1906,7 +1920,7 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
|
|
||||||
|
|
||||||
static void pool_destroy_debug(apr_pool_t *pool, const char *file_line)
|
|
||||||
{
|
|
||||||
- apr_pool_check_integrity(pool);
|
|
||||||
+ apr_pool_check_lifetime(pool);
|
|
||||||
|
|
||||||
#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
|
|
||||||
apr_pool_log_event(pool, "DESTROY", file_line, 1);
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,9 +1,10 @@
|
|||||||
|
|
||||||
- avoid adding %{_libdir} to --link-ld output
|
- avoid adding %{_libdir} to --link-ld output
|
||||||
|
|
||||||
--- apr-1.2.2/apr-config.in.libdir
|
|
||||||
+++ apr-1.2.2/apr-config.in
|
--- a/apr-config.in
|
||||||
@@ -181,8 +181,10 @@
|
+++ b/apr-config.in
|
||||||
|
@@ -213,8 +213,10 @@ while test $# -gt 0; do
|
||||||
;;
|
;;
|
||||||
--link-ld)
|
--link-ld)
|
||||||
if test "$location" = "installed"; then
|
if test "$location" = "installed"; then
|
||||||
@ -13,6 +14,11 @@
|
|||||||
+ flags="$flags -L$libdir"
|
+ flags="$flags -L$libdir"
|
||||||
+ fi
|
+ fi
|
||||||
+ flags="$flags -l${APR_LIBNAME}"
|
+ flags="$flags -l${APR_LIBNAME}"
|
||||||
|
elif test "$location" = "crosscompile"; then
|
||||||
|
flags="$flags -L$APR_TARGET_DIR/$libdir -l${APR_LIBNAME}"
|
||||||
else
|
else
|
||||||
### this surely can't work since the library is in .libs?
|
--
|
||||||
flags="$flags -L$APR_BUILD_DIR -l${APR_LIBNAME}"
|
apr-config.in | 6 ++++--
|
||||||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
BIN
apr-1.7.4.tar.gz
Normal file
BIN
apr-1.7.4.tar.gz
Normal file
Binary file not shown.
16
apr.spec
16
apr.spec
@ -1,8 +1,8 @@
|
|||||||
%define aprver 1
|
%define aprver 1
|
||||||
|
|
||||||
Name: apr
|
Name: apr
|
||||||
Version: 1.7.0
|
Version: 1.7.4
|
||||||
Release: 5
|
Release: 1
|
||||||
Summary: Apache Portable Runtime.
|
Summary: Apache Portable Runtime.
|
||||||
License: ASL 2.0 and BSD with advertising and ISC and BSD
|
License: ASL 2.0 and BSD with advertising and ISC and BSD
|
||||||
URL: http://apr.apache.org
|
URL: http://apr.apache.org
|
||||||
@ -11,15 +11,6 @@ Source1: apr-wrapper.h
|
|||||||
|
|
||||||
Patch0: apr-1.2.2-libdir.patch
|
Patch0: apr-1.2.2-libdir.patch
|
||||||
Patch1: apr-1.2.7-pkgconf.patch
|
Patch1: apr-1.2.7-pkgconf.patch
|
||||||
Patch2: Split-apr_pool_check_integrity-into-two-parts.patch
|
|
||||||
Patch3: Pool-debugging-fixes.patch
|
|
||||||
Patch4: Fix-pool-debugging-output-so-that-creation-events-ar.patch
|
|
||||||
Patch5: backport-CVE-2017-12613-Bounds-check-human-readable-date-fields.patch
|
|
||||||
Patch6: backport-build-apr_common.me-avoid-explicit-inclusion-if-conf.patch
|
|
||||||
Patch7: backport-Address-some-warnings-raised-by-MSVC-32-64.patch
|
|
||||||
Patch8: backport-apr_encode_base32-fix-advertised-output-len-when-cal.patch
|
|
||||||
Patch9: backport-apr_decode_base-64-32-16-stop-reading-before-not-inc.patch
|
|
||||||
Patch10:backport-CVE-2022-24963-encoding-Better-check-inputs-of-apr_-encode-decode-_.patch
|
|
||||||
|
|
||||||
BuildRequires: gcc autoconf libtool libuuid-devel python3 lksctp-tools-devel
|
BuildRequires: gcc autoconf libtool libuuid-devel python3 lksctp-tools-devel
|
||||||
|
|
||||||
@ -103,6 +94,9 @@ make check
|
|||||||
%doc docs/incomplete_types docs/non_apr_programs
|
%doc docs/incomplete_types docs/non_apr_programs
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Feb 3 2024 caixiaomeng <caixiaomeng2@huawei.com> - 1.7.4-1
|
||||||
|
Update to 1.7.4
|
||||||
|
|
||||||
* Mon Feb 13 2023 fuanan <fuanan3@h-partners.com> - 1.7.0-5
|
* Mon Feb 13 2023 fuanan <fuanan3@h-partners.com> - 1.7.0-5
|
||||||
- Type:CVE
|
- Type:CVE
|
||||||
- ID:CVE-2022-24963
|
- ID:CVE-2022-24963
|
||||||
|
|||||||
@ -1,181 +0,0 @@
|
|||||||
From 66e41846004d40fd6d12811fd0acf08920a3d1cd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yann Ylavic <ylavic@apache.org>
|
|
||||||
Date: Wed, 3 Apr 2019 13:54:46 +0000
|
|
||||||
Subject: [PATCH] Address some warnings raised by MSVC-32/64.
|
|
||||||
|
|
||||||
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1856873 13f79535-47bb-0310-9956-ffa450edef68
|
|
||||||
---
|
|
||||||
atomic/win32/apr_atomic64.c | 50 ++++++++-----------------------------
|
|
||||||
encoding/apr_encode.c | 4 +--
|
|
||||||
file_io/win32/seek.c | 2 +-
|
|
||||||
memory/unix/apr_pools.c | 8 +++---
|
|
||||||
4 files changed, 18 insertions(+), 46 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/atomic/win32/apr_atomic64.c b/atomic/win32/apr_atomic64.c
|
|
||||||
index a5acc945e..e2cd06d6c 100644
|
|
||||||
--- a/atomic/win32/apr_atomic64.c
|
|
||||||
+++ b/atomic/win32/apr_atomic64.c
|
|
||||||
@@ -18,55 +18,35 @@
|
|
||||||
#include "apr_atomic.h"
|
|
||||||
#include "apr_thread_mutex.h"
|
|
||||||
|
|
||||||
-APR_DECLARE(apr_uint64_t) apr_atomic_add64(volatile apr_uint64_t *mem, apr_uint64_t val)
|
|
||||||
-{
|
|
||||||
-#if (defined(_M_IA64) || defined(_M_AMD64))
|
|
||||||
- return InterlockedExchangeAdd64(mem, val);
|
|
||||||
-#else
|
|
||||||
- return InterlockedExchangeAdd64((long *)mem, val);
|
|
||||||
-#endif
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
/* Of course we want the 2's compliment of the unsigned value, val */
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma warning(disable: 4146)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+APR_DECLARE(apr_uint64_t) apr_atomic_add64(volatile apr_uint64_t *mem, apr_uint64_t val)
|
|
||||||
+{
|
|
||||||
+ return InterlockedExchangeAdd64((volatile LONG64 *)mem, val);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
APR_DECLARE(void) apr_atomic_sub64(volatile apr_uint64_t *mem, apr_uint64_t val)
|
|
||||||
{
|
|
||||||
-#if (defined(_M_IA64) || defined(_M_AMD64))
|
|
||||||
- InterlockedExchangeAdd64(mem, -val);
|
|
||||||
-#else
|
|
||||||
- InterlockedExchangeAdd64((long *)mem, -val);
|
|
||||||
-#endif
|
|
||||||
+ InterlockedExchangeAdd64((volatile LONG64 *)mem, -val);
|
|
||||||
}
|
|
||||||
|
|
||||||
APR_DECLARE(apr_uint64_t) apr_atomic_inc64(volatile apr_uint64_t *mem)
|
|
||||||
{
|
|
||||||
/* we return old value, win64 returns new value :( */
|
|
||||||
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
|
|
||||||
- return InterlockedIncrement64(mem) - 1;
|
|
||||||
-#else
|
|
||||||
- return InterlockedIncrement64((long *)mem) - 1;
|
|
||||||
-#endif
|
|
||||||
+ return InterlockedIncrement64((volatile LONG64 *)mem) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
APR_DECLARE(int) apr_atomic_dec64(volatile apr_uint64_t *mem)
|
|
||||||
{
|
|
||||||
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
|
|
||||||
- return InterlockedDecrement64(mem);
|
|
||||||
-#else
|
|
||||||
- return InterlockedDecrement64((long *)mem);
|
|
||||||
-#endif
|
|
||||||
+ return !!InterlockedDecrement64((volatile LONG64 *)mem);
|
|
||||||
}
|
|
||||||
|
|
||||||
APR_DECLARE(void) apr_atomic_set64(volatile apr_uint64_t *mem, apr_uint64_t val)
|
|
||||||
{
|
|
||||||
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
|
|
||||||
- InterlockedExchange64(mem, val);
|
|
||||||
-#else
|
|
||||||
- InterlockedExchange64((long*)mem, val);
|
|
||||||
-#endif
|
|
||||||
+ InterlockedExchange64((volatile LONG64 *)mem, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
APR_DECLARE(apr_uint64_t) apr_atomic_read64(volatile apr_uint64_t *mem)
|
|
||||||
@@ -77,18 +57,10 @@ APR_DECLARE(apr_uint64_t) apr_atomic_read64(volatile apr_uint64_t *mem)
|
|
||||||
APR_DECLARE(apr_uint64_t) apr_atomic_cas64(volatile apr_uint64_t *mem, apr_uint64_t with,
|
|
||||||
apr_uint64_t cmp)
|
|
||||||
{
|
|
||||||
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
|
|
||||||
- return InterlockedCompareExchange64(mem, with, cmp);
|
|
||||||
-#else
|
|
||||||
- return InterlockedCompareExchange64((long*)mem, with, cmp);
|
|
||||||
-#endif
|
|
||||||
+ return InterlockedCompareExchange64((volatile LONG64 *)mem, with, cmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
APR_DECLARE(apr_uint64_t) apr_atomic_xchg64(volatile apr_uint64_t *mem, apr_uint64_t val)
|
|
||||||
{
|
|
||||||
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
|
|
||||||
- return InterlockedExchange64(mem, val);
|
|
||||||
-#else
|
|
||||||
- return InterlockedExchange64((long *)mem, val);
|
|
||||||
-#endif
|
|
||||||
+ return InterlockedExchange64((volatile LONG64 *)mem, val);
|
|
||||||
}
|
|
||||||
diff --git a/encoding/apr_encode.c b/encoding/apr_encode.c
|
|
||||||
index 905185921..e44ae11f0 100644
|
|
||||||
--- a/encoding/apr_encode.c
|
|
||||||
+++ b/encoding/apr_encode.c
|
|
||||||
@@ -1062,7 +1062,7 @@ APR_DECLARE(apr_status_t) apr_encode_base16(char *dest,
|
|
||||||
const char *src, apr_ssize_t slen, int flags, apr_size_t * len)
|
|
||||||
{
|
|
||||||
const char *in = src;
|
|
||||||
- apr_size_t size;
|
|
||||||
+ apr_ssize_t size;
|
|
||||||
|
|
||||||
if (!src) {
|
|
||||||
return APR_NOTFOUND;
|
|
||||||
@@ -1115,7 +1115,7 @@ APR_DECLARE(apr_status_t) apr_encode_base16_binary(char *dest,
|
|
||||||
const unsigned char *src, apr_ssize_t slen, int flags, apr_size_t * len)
|
|
||||||
{
|
|
||||||
const unsigned char *in = src;
|
|
||||||
- apr_size_t size;
|
|
||||||
+ apr_ssize_t size;
|
|
||||||
|
|
||||||
if (!src) {
|
|
||||||
return APR_NOTFOUND;
|
|
||||||
diff --git a/file_io/win32/seek.c b/file_io/win32/seek.c
|
|
||||||
index afe6edb00..dfef57716 100644
|
|
||||||
--- a/file_io/win32/seek.c
|
|
||||||
+++ b/file_io/win32/seek.c
|
|
||||||
@@ -170,7 +170,7 @@ APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *thefile, apr_off_t offset)
|
|
||||||
thefile->bufpos = 0;
|
|
||||||
}
|
|
||||||
else if (offset < thefile->filePtr + (apr_off_t)thefile->bufpos) {
|
|
||||||
- thefile->bufpos = offset - thefile->filePtr;
|
|
||||||
+ thefile->bufpos = (apr_size_t)(offset - thefile->filePtr);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (thefile->bufpos != 0) {
|
|
||||||
diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c
|
|
||||||
index 5fa7da1b5..0ca715efa 100644
|
|
||||||
--- a/memory/unix/apr_pools.c
|
|
||||||
+++ b/memory/unix/apr_pools.c
|
|
||||||
@@ -407,7 +407,7 @@ apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t in_size)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
- node->index = index;
|
|
||||||
+ node->index = (apr_uint32_t)index;
|
|
||||||
node->endp = (char *)node + size;
|
|
||||||
|
|
||||||
have_node:
|
|
||||||
@@ -877,7 +877,7 @@ APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t in_size)
|
|
||||||
free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
|
|
||||||
BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
|
|
||||||
|
|
||||||
- active->free_index = free_index;
|
|
||||||
+ active->free_index = (apr_uint32_t)free_index;
|
|
||||||
node = active->next;
|
|
||||||
if (free_index >= node->free_index)
|
|
||||||
goto have_mem;
|
|
||||||
@@ -1289,7 +1289,7 @@ static int psprintf_flush(apr_vformatter_buff_t *vbuff)
|
|
||||||
free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
|
|
||||||
BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
|
|
||||||
|
|
||||||
- active->free_index = free_index;
|
|
||||||
+ active->free_index = (apr_uint32_t)free_index;
|
|
||||||
node = active->next;
|
|
||||||
if (free_index < node->free_index) {
|
|
||||||
do {
|
|
||||||
@@ -1445,7 +1445,7 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap)
|
|
||||||
free_index = (APR_ALIGN(active->endp - active->first_avail + 1,
|
|
||||||
BOUNDARY_SIZE) - BOUNDARY_SIZE) >> BOUNDARY_INDEX;
|
|
||||||
|
|
||||||
- active->free_index = free_index;
|
|
||||||
+ active->free_index = (apr_uint32_t)free_index;
|
|
||||||
node = active->next;
|
|
||||||
|
|
||||||
if (free_index >= node->free_index) {
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
||||||
@ -1,50 +0,0 @@
|
|||||||
From ad958385a4180d7a83d90589689fcd36e3bbc57a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nick Kew <niq@apache.org>
|
|
||||||
Date: Sun, 10 Sep 2017 22:30:14 +0000
|
|
||||||
Subject: [PATCH] Bounds-check human-readable date fields (credit: Stefan
|
|
||||||
Sperling)
|
|
||||||
|
|
||||||
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1807975 13f79535-47bb-0310-9956-ffa450edef68
|
|
||||||
---
|
|
||||||
time/unix/time.c | 3 +++
|
|
||||||
time/win32/time.c | 6 ++++++
|
|
||||||
2 files changed, 9 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/time/unix/time.c b/time/unix/time.c
|
|
||||||
index dfa45e690c..7f09581927 100644
|
|
||||||
--- a/time/unix/time.c
|
|
||||||
+++ b/time/unix/time.c
|
|
||||||
@@ -142,6 +142,9 @@ APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *t, apr_time_exp_t *xt)
|
|
||||||
static const int dayoffset[12] =
|
|
||||||
{306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275};
|
|
||||||
|
|
||||||
+ if (xt->tm_mon < 0 || xt->tm_mon >= 12)
|
|
||||||
+ return APR_EBADDATE;
|
|
||||||
+
|
|
||||||
/* shift new year to 1st March in order to make leap year calc easy */
|
|
||||||
|
|
||||||
if (xt->tm_mon < 2)
|
|
||||||
diff --git a/time/win32/time.c b/time/win32/time.c
|
|
||||||
index 2349799356..1a705443b2 100644
|
|
||||||
--- a/time/win32/time.c
|
|
||||||
+++ b/time/win32/time.c
|
|
||||||
@@ -54,6 +54,9 @@ static void SystemTimeToAprExpTime(apr_time_exp_t *xt, SYSTEMTIME *tm)
|
|
||||||
static const int dayoffset[12] =
|
|
||||||
{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
|
|
||||||
|
|
||||||
+ if (tm->wMonth < 1 || tm->wMonth > 12)
|
|
||||||
+ return APR_EBADDATE;
|
|
||||||
+
|
|
||||||
/* Note; the caller is responsible for filling in detailed tm_usec,
|
|
||||||
* tm_gmtoff and tm_isdst data when applicable.
|
|
||||||
*/
|
|
||||||
@@ -224,6 +227,9 @@ APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *t,
|
|
||||||
static const int dayoffset[12] =
|
|
||||||
{306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275};
|
|
||||||
|
|
||||||
+ if (xt->tm_mon < 0 || xt->tm_mon >= 12)
|
|
||||||
+ return APR_EBADDATE;
|
|
||||||
+
|
|
||||||
/* shift new year to 1st March in order to make leap year calc easy */
|
|
||||||
|
|
||||||
if (xt->tm_mon < 2)
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,199 +0,0 @@
|
|||||||
From e70d77ecc4aa9e0dccac6e7e5ba74639f71f50cf Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yann Ylavic <ylavic@apache.org>
|
|
||||||
Date: Fri, 27 Nov 2020 17:04:06 +0000
|
|
||||||
Subject: [PATCH] apr_decode_base{64,32,16}: stop reading before (not
|
|
||||||
including) NUL byte.
|
|
||||||
|
|
||||||
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1883870 13f79535-47bb-0310-9956-ffa450edef68
|
|
||||||
---
|
|
||||||
encoding/apr_encode.c | 60 ++++++++++++++++++++++++++++++-------------
|
|
||||||
test/testencode.c | 24 ++++++++++++-----
|
|
||||||
2 files changed, 59 insertions(+), 25 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/encoding/apr_encode.c b/encoding/apr_encode.c
|
|
||||||
index b3278c7fd..bc2dc5437 100644
|
|
||||||
--- a/encoding/apr_encode.c
|
|
||||||
+++ b/encoding/apr_encode.c
|
|
||||||
@@ -394,11 +394,15 @@ APR_DECLARE(apr_status_t) apr_decode_base64(char *dest, const char *src,
|
|
||||||
apr_status_t status;
|
|
||||||
|
|
||||||
bufin = (const unsigned char *)src;
|
|
||||||
- while (pr2six[*(bufin++)] < 64 && count)
|
|
||||||
+ while (count && pr2six[*bufin] < 64) {
|
|
||||||
count--;
|
|
||||||
- nprbytes = (bufin - (const unsigned char *)src) - 1;
|
|
||||||
- while (pr2six[*(bufin++)] > 64 && count)
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
+ nprbytes = bufin - (const unsigned char *)src;
|
|
||||||
+ while (count && pr2six[*bufin] > 64) {
|
|
||||||
count--;
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
status = flags & APR_ENCODE_RELAXED ? APR_SUCCESS :
|
|
||||||
count ? APR_BADCH : APR_SUCCESS;
|
|
||||||
@@ -469,11 +473,15 @@ APR_DECLARE(apr_status_t) apr_decode_base64_binary(unsigned char *dest,
|
|
||||||
apr_status_t status;
|
|
||||||
|
|
||||||
bufin = (const unsigned char *)src;
|
|
||||||
- while (pr2six[*(bufin++)] < 64 && count)
|
|
||||||
+ while (count && pr2six[*bufin] < 64) {
|
|
||||||
count--;
|
|
||||||
- nprbytes = (bufin - (const unsigned char *)src) - 1;
|
|
||||||
- while (pr2six[*(bufin++)] > 64 && count)
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
+ nprbytes = bufin - (const unsigned char *)src;
|
|
||||||
+ while (count && pr2six[*bufin] > 64) {
|
|
||||||
count--;
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
status = flags & APR_ENCODE_RELAXED ? APR_SUCCESS :
|
|
||||||
count ? APR_BADCH : APR_SUCCESS;
|
|
||||||
@@ -842,11 +850,15 @@ APR_DECLARE(apr_status_t) apr_decode_base32(char *dest, const char *src,
|
|
||||||
}
|
|
||||||
|
|
||||||
bufin = (const unsigned char *)src;
|
|
||||||
- while (pr2[*(bufin++)] < 32 && count)
|
|
||||||
+ while (count && pr2[*bufin] < 32) {
|
|
||||||
count--;
|
|
||||||
- nprbytes = (bufin - (const unsigned char *)src) - 1;
|
|
||||||
- while (pr2[*(bufin++)] > 32 && count)
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
+ nprbytes = bufin - (const unsigned char *)src;
|
|
||||||
+ while (count && pr2[*bufin] > 32) {
|
|
||||||
count--;
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
status = flags & APR_ENCODE_RELAXED ? APR_SUCCESS :
|
|
||||||
count ? APR_BADCH : APR_SUCCESS;
|
|
||||||
@@ -945,11 +957,15 @@ APR_DECLARE(apr_status_t) apr_decode_base32_binary(unsigned char *dest,
|
|
||||||
}
|
|
||||||
|
|
||||||
bufin = (const unsigned char *)src;
|
|
||||||
- while (pr2[*(bufin++)] < 32 && count)
|
|
||||||
+ while (count && pr2[*bufin] < 32) {
|
|
||||||
count--;
|
|
||||||
- nprbytes = (bufin - (const unsigned char *)src) - 1;
|
|
||||||
- while (pr2[*(bufin++)] > 32 && count)
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
+ nprbytes = bufin - (const unsigned char *)src;
|
|
||||||
+ while (count && pr2[*bufin] > 32) {
|
|
||||||
count--;
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
status = flags & APR_ENCODE_RELAXED ? APR_SUCCESS :
|
|
||||||
count ? APR_BADCH : APR_SUCCESS;
|
|
||||||
@@ -1220,11 +1236,15 @@ APR_DECLARE(apr_status_t) apr_decode_base16(char *dest,
|
|
||||||
|
|
||||||
count = slen;
|
|
||||||
bufin = (const unsigned char *)src;
|
|
||||||
- while (pr2two[*(bufin++)] != 16 && count)
|
|
||||||
+ while (count && pr2two[*bufin] != 16) {
|
|
||||||
count--;
|
|
||||||
- nprbytes = (bufin - (const unsigned char *)src) - 1;
|
|
||||||
- while (pr2two[*(bufin++)] > 16 && count)
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
+ nprbytes = bufin - (const unsigned char *)src;
|
|
||||||
+ while (count && pr2two[*bufin] > 16) {
|
|
||||||
count--;
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
status = flags & APR_ENCODE_RELAXED ? APR_SUCCESS :
|
|
||||||
count ? APR_BADCH : APR_SUCCESS;
|
|
||||||
@@ -1310,11 +1330,15 @@ APR_DECLARE(apr_status_t) apr_decode_base16_binary(unsigned char *dest,
|
|
||||||
|
|
||||||
count = slen;
|
|
||||||
bufin = (const unsigned char *)src;
|
|
||||||
- while (pr2two[*(bufin++)] != 16 && count)
|
|
||||||
+ while (count && pr2two[*bufin] != 16) {
|
|
||||||
count--;
|
|
||||||
- nprbytes = (bufin - (const unsigned char *)src) - 1;
|
|
||||||
- while (pr2two[*(bufin++)] > 16 && count)
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
+ nprbytes = bufin - (const unsigned char *)src;
|
|
||||||
+ while (count && pr2two[*bufin] > 16) {
|
|
||||||
count--;
|
|
||||||
+ bufin++;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
status = flags & APR_ENCODE_RELAXED ? APR_SUCCESS :
|
|
||||||
count ? APR_BADCH : APR_SUCCESS;
|
|
||||||
diff --git a/test/testencode.c b/test/testencode.c
|
|
||||||
index 3680fa380..ba23aaf28 100644
|
|
||||||
--- a/test/testencode.c
|
|
||||||
+++ b/test/testencode.c
|
|
||||||
@@ -134,37 +134,42 @@ static void test_decode_base64(abts_case * tc, void *data)
|
|
||||||
src = "";
|
|
||||||
target = "";
|
|
||||||
dest = apr_pdecode_base64(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
- ABTS_STR_EQUAL(tc, dest, target);
|
|
||||||
+ ABTS_STR_EQUAL(tc, target, dest);
|
|
||||||
|
|
||||||
src = "Zg==";
|
|
||||||
target = "f";
|
|
||||||
dest = apr_pdecode_base64(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
- ABTS_STR_EQUAL(tc, dest, target);
|
|
||||||
+ ABTS_STR_EQUAL(tc, target, dest);
|
|
||||||
+
|
|
||||||
+ src = "Zg=";
|
|
||||||
+ target = "f";
|
|
||||||
+ dest = apr_pdecode_base64(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
+ ABTS_STR_EQUAL(tc, target, dest);
|
|
||||||
|
|
||||||
src = "Zg";
|
|
||||||
target = "f";
|
|
||||||
dest = apr_pdecode_base64(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
- ABTS_STR_EQUAL(tc, dest, target);
|
|
||||||
+ ABTS_STR_EQUAL(tc, target, dest);
|
|
||||||
|
|
||||||
src = "Zm8=";
|
|
||||||
target = "fo";
|
|
||||||
dest = apr_pdecode_base64(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
- ABTS_STR_EQUAL(tc, dest, target);
|
|
||||||
+ ABTS_STR_EQUAL(tc, target, dest);
|
|
||||||
|
|
||||||
src = "Zm8";
|
|
||||||
target = "fo";
|
|
||||||
dest = apr_pdecode_base64(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
- ABTS_STR_EQUAL(tc, dest, target);
|
|
||||||
+ ABTS_STR_EQUAL(tc, target, dest);
|
|
||||||
|
|
||||||
src = "Zm9v";
|
|
||||||
target = "foo";
|
|
||||||
dest = apr_pdecode_base64(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
- ABTS_STR_EQUAL(tc, dest, target);
|
|
||||||
+ ABTS_STR_EQUAL(tc, target, dest);
|
|
||||||
|
|
||||||
src = "Zm9v";
|
|
||||||
target = "foo";
|
|
||||||
dest = apr_pdecode_base64(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
- ABTS_STR_EQUAL(tc, dest, target);
|
|
||||||
+ ABTS_STR_EQUAL(tc, target, dest);
|
|
||||||
|
|
||||||
apr_pool_destroy(pool);
|
|
||||||
}
|
|
||||||
@@ -191,6 +196,11 @@ static void test_decode_base64_binary(abts_case * tc, void *data)
|
|
||||||
ABTS_ASSERT(tc, "apr_pdecode_base64_binary target!=dest", memcmp(ufoobar, udest, 1) == 0);
|
|
||||||
ABTS_INT_EQUAL(tc, len, 1);
|
|
||||||
|
|
||||||
+ src = "Zg=";
|
|
||||||
+ udest = apr_pdecode_base64_binary(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
+ ABTS_ASSERT(tc, "apr_pdecode_base64_binary target!=dest", memcmp(ufoobar, udest, 1) == 0);
|
|
||||||
+ ABTS_INT_EQUAL(tc, len, 1);
|
|
||||||
+
|
|
||||||
src = "Zg";
|
|
||||||
udest = apr_pdecode_base64_binary(pool, src, APR_ENCODE_STRING, APR_ENCODE_NONE, &len);
|
|
||||||
ABTS_ASSERT(tc, "apr_pdecode_base64_binary target!=dest", memcmp(ufoobar, udest, 1) == 0);
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
From 2b0eb50e43667ce8cebf0bb745a0eb7d493385c2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yann Ylavic <ylavic@apache.org>
|
|
||||||
Date: Fri, 27 Nov 2020 16:54:50 +0000
|
|
||||||
Subject: [PATCH] apr_encode_base32: fix advertised output *len when called
|
|
||||||
with dst == NULL.
|
|
||||||
|
|
||||||
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1883868 13f79535-47bb-0310-9956-ffa450edef68
|
|
||||||
---
|
|
||||||
encoding/apr_encode.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/encoding/apr_encode.c b/encoding/apr_encode.c
|
|
||||||
index e44ae11f0..b3278c7fd 100644
|
|
||||||
--- a/encoding/apr_encode.c
|
|
||||||
+++ b/encoding/apr_encode.c
|
|
||||||
@@ -665,7 +665,7 @@ APR_DECLARE(apr_status_t) apr_encode_base32(char *dest, const char *src,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (len) {
|
|
||||||
- *len = ((slen + 2) / 3 * 4) + 1;
|
|
||||||
+ *len = ((slen + 4) / 5 * 8) + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return APR_SUCCESS;
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
||||||
@ -1,63 +0,0 @@
|
|||||||
From 0a763c5e500f4304b7c534fae0fad430d64982e8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yann Ylavic <ylavic@apache.org>
|
|
||||||
Date: Sat, 6 Mar 2021 22:20:59 +0000
|
|
||||||
Subject: [PATCH] build/apr_common.m4: avoid explicit inclusion of "confdefs.h"
|
|
||||||
|
|
||||||
The failure is observed on `autoconf-2.69d` (soon to be released
|
|
||||||
as `autoconf-2.70`). There `int64_t` detection fails as:
|
|
||||||
|
|
||||||
$ autoreconf && ./configure
|
|
||||||
checking whether int64_t and int use fmt %d... no
|
|
||||||
checking whether int64_t and long use fmt %ld... no
|
|
||||||
checking whether int64_t and long long use fmt %lld... no
|
|
||||||
configure: error: could not determine the string function for int64_t
|
|
||||||
```
|
|
||||||
|
|
||||||
This happens because `./configure` always stumbles on warning:
|
|
||||||
|
|
||||||
configure:3350: gcc -c -g -O2 -Werror conftest.c >&5
|
|
||||||
In file included from conftest.c:31:
|
|
||||||
confdefs.h:22: error: "__STDC_WANT_IEC_60559_ATTRIBS_EXT__" redefined [-Werror]
|
|
||||||
22 | #define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
|
|
||||||
|
|
|
||||||
|
|
||||||
It's triggered by double inclusion of `"confdefs.h"` contents:
|
|
||||||
explicitly in `APR_TRY_COMPILE_NO_WARNING` macro and implicitly
|
|
||||||
via `AC_LANG_SOURCE` use.
|
|
||||||
|
|
||||||
To fix it and avoid having to define `main()` declaration the change
|
|
||||||
uses `AC_LANG_PROGRAM` instead.
|
|
||||||
|
|
||||||
Tested on both `autoconf-2.69` and `autoconf-2.69d`.
|
|
||||||
|
|
||||||
|
|
||||||
Github: closes #25
|
|
||||||
Submitted by: Sergei Trofimovich <slyfox gentoo.org>
|
|
||||||
Reviewed by: ylavic
|
|
||||||
|
|
||||||
|
|
||||||
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1887279 13f79535-47bb-0310-9956-ffa450edef68
|
|
||||||
---
|
|
||||||
build/apr_common.m4 | 8 ++------
|
|
||||||
1 file changed, 2 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/build/apr_common.m4 b/build/apr_common.m4
|
|
||||||
index 3dfe85542b7..67d004983d2 100644
|
|
||||||
--- a/build/apr_common.m4
|
|
||||||
+++ b/build/apr_common.m4
|
|
||||||
@@ -467,13 +467,9 @@ AC_DEFUN([APR_TRY_COMPILE_NO_WARNING],
|
|
||||||
CFLAGS="$CFLAGS -Werror"
|
|
||||||
fi
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
- [AC_LANG_SOURCE(
|
|
||||||
- [#include "confdefs.h"
|
|
||||||
- ]
|
|
||||||
- [[$1]]
|
|
||||||
- [int main(int argc, const char *const *argv) {]
|
|
||||||
+ [AC_LANG_PROGRAM(
|
|
||||||
+ [[$1]],
|
|
||||||
[[$2]]
|
|
||||||
- [ return 0; }]
|
|
||||||
)], [CFLAGS=$apr_save_CFLAGS
|
|
||||||
$3], [CFLAGS=$apr_save_CFLAGS
|
|
||||||
$4])
|
|
||||||
Loading…
x
Reference in New Issue
Block a user