cmake: fix enabling LDAPS on Windows

Before this patch, enabling LDAPS required a manual C flag:
c1cfc31cfc/curl-cmake.sh (L105)

Fix this and enable LDAPS automatically when using `wldap32` (and
when not explicitly disabled). This matches autotools and `Makefile.mk`
behavior. Also remove issue from KNOWN_BUGS.

Add workaround for MSVS 2010 warning triggered by LDAPS now enabled
in more CI tests:
`ldap.c(360): warning C4306: 'type cast' : conversion from 'int' to 'void *' of greater size`
Ref: https://ci.appveyor.com/project/curlorg/curl/builds/46408284/job/v8mwl9yfbmoeqwlr#L312

Reported-by: JackBoosY on github
Reviewed-by: Jay Satiro
Reviewed-by: Marcel Raad
Fixes #6284
Closes #10674
This commit is contained in:
Viktor Szakats 2023-03-05 19:55:14 +00:00
parent 8d0fa3a70d
commit 8cfc936f5c
No known key found for this signature in database
GPG Key ID: B5ABD165E2AEF201
3 changed files with 10 additions and 5 deletions

View File

@ -571,6 +571,8 @@ if(NOT CURL_DISABLE_LDAP)
check_library_exists_concat("wldap32" cldap_open HAVE_WLDAP32)
if(NOT HAVE_WLDAP32)
set(USE_WIN32_LDAP OFF)
elseif(NOT CURL_DISABLE_LDAPS)
set(HAVE_LDAP_SSL ON)
endif()
endif()
endif()

View File

@ -109,7 +109,6 @@ problems may have been fixed or changed somewhat since this was written.
15.8 libcurl.pc uses absolute library paths
15.10 libpsl is not supported
15.11 ExternalProject_Add does not set CURL_CA_PATH
15.12 cannot enable LDAPS on Windows
15.13 CMake build with MIT Kerberos does not work
16. Applications
@ -694,10 +693,6 @@ problems may have been fixed or changed somewhat since this was written.
See https://github.com/curl/curl/issues/6313
15.12 cannot enable LDAPS on Windows
See https://github.com/curl/curl/issues/6284
15.13 CMake build with MIT Kerberos does not work
Minimum CMake version was bumped in curl 7.71.0 (#5358) Since CMake 3.2

View File

@ -140,6 +140,14 @@ static void _ldap_free_urldesc(LDAPURLDesc *ludp);
#define ldap_err2string ldap_err2stringA
#endif
#if defined(USE_WIN32_LDAP) && defined(_MSC_VER) && (_MSC_VER <= 1600)
/* Workaround for warning:
'type cast' : conversion from 'int' to 'void *' of greater size */
#undef LDAP_OPT_ON
#undef LDAP_OPT_OFF
#define LDAP_OPT_ON ((void *)(size_t)1)
#define LDAP_OPT_OFF ((void *)(size_t)0)
#endif
static CURLcode ldap_do(struct Curl_easy *data, bool *done);