It's not safe to ask an SDK that doesn't define LDAP_DEFAULT_LIMIT to
use -1, because it might put it on the wire as an unsigned int.
We previously special-cased this for the MSSDK, but it needs to be more general.
PR23356
git-svn-id: https://svn.apache.org/repos/asf/apr/apr-util/trunk@751456 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CHANGES b/CHANGES
index 3c9cc78..b361a7a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,11 @@
Changes with APR-util 1.4.0
+ *) APR_LDAP_SIZELIMIT should prefer LDAP_DEFAULT_LIMIT/-1 when the
+ SDK supports it, but in the absence of LDAP_DEFAULT_LIMIT (and
+ LDAP_NO_LIMIT/0) it is not safe to use a literal -1.
+ PR23356 [Eric Covener]
+
*) Fix apr_memcache_multgetp memory corruption and incorrect error
handling. PR 46588 [Sami Tolvanen <sami.tolvanen mywot.com>]
diff --git a/include/apr_ldap.h.in b/include/apr_ldap.h.in
index c757e06..6087783 100644
--- a/include/apr_ldap.h.in
+++ b/include/apr_ldap.h.in
@@ -102,17 +102,21 @@
/*
* For ldap function calls that input a size limit on the number of returned elements
* Some SDKs do not have the define for LDAP_DEFAULT_LIMIT (-1) or LDAP_NO_LIMIT (0)
+ * LDAP_DEFAULT_LIMIT is preferred as it allows inheritance from whatever the SDK
+ * or process is configured for.
*/
-#if APR_HAS_ZOS_LDAPSDK || APR_HAS_MICROSOFT_LDAPSDK
-#define APR_LDAP_SIZELIMIT LDAP_NO_LIMIT
-#else
#ifdef LDAP_DEFAULT_LIMIT
#define APR_LDAP_SIZELIMIT LDAP_DEFAULT_LIMIT
#else
-#define APR_LDAP_SIZELIMIT -1 /* equivalent to LDAP_DEFAULT_LIMIT */
+#ifdef LDAP_NO_LIMIT
+#define APR_LDAP_SIZELIMIT LDAP_NO_LIMIT
#endif
#endif
+#ifndef APR_LDAP_SIZELIMIT
+#define APR_LDAP_SIZELIMIT 0 /* equivalent to LDAP_NO_LIMIT, and what goes on the wire */
+#endif
+
/*
* z/OS is missing some defines
*/
diff --git a/include/apr_ldap.hw b/include/apr_ldap.hw
index a589376..c1bd0d4 100644
--- a/include/apr_ldap.hw
+++ b/include/apr_ldap.hw
@@ -102,17 +102,21 @@
/*
* For ldap function calls that input a size limit on the number of returned elements
* Some SDKs do not have the define for LDAP_DEFAULT_LIMIT (-1) or LDAP_NO_LIMIT (0)
+ * LDAP_DEFAULT_LIMIT is preferred as it allows inheritance from whatever the SDK
+ * or process is configured for.
*/
-#if APR_HAS_ZOS_LDAPSDK || APR_HAS_MICROSOFT_LDAPSDK
-#define APR_LDAP_SIZELIMIT LDAP_NO_LIMIT
-#else
#ifdef LDAP_DEFAULT_LIMIT
#define APR_LDAP_SIZELIMIT LDAP_DEFAULT_LIMIT
#else
-#define APR_LDAP_SIZELIMIT -1 /* equivalent to LDAP_DEFAULT_LIMIT */
+#ifdef LDAP_NO_LIMIT
+#define APR_LDAP_SIZELIMIT LDAP_NO_LIMIT
#endif
#endif
+#ifndef APR_LDAP_SIZELIMIT
+#define APR_LDAP_SIZELIMIT 0 /* equivalent to LDAP_NO_LIMIT, and what goes on the wire */
+#endif
+
/*
* z/OS is missing some defines
*/