[PATCH 0/5] MR7177: wldap32: Avoid crashes in interact_callback() if defaults is NULL.
From: Dmitry Timoshkov <dmitry(a)baikal.ru> ldap_bind_sW() already copes with SEC_WINNT_AUTH_IDENTITY_W being NULL. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/wldap32/bind.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dlls/wldap32/bind.c b/dlls/wldap32/bind.c index 55422c82474..f150a4f0c02 100644 --- a/dlls/wldap32/bind.c +++ b/dlls/wldap32/bind.c @@ -142,6 +142,8 @@ static int interact_callback( LDAP *ld, unsigned flags, void *defaults, void *sa TRACE( "%p, %08xlx, %p, %p\n", ld, flags, defaults, sasl_interact ); + if (!defaults) return 0; + while (ptr && ptr->id != SASL_CB_LIST_END) { switch (ptr->id) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7177
From: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/wldap32/option.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dlls/wldap32/option.c b/dlls/wldap32/option.c index 00c08e0108c..fb16d02d51e 100644 --- a/dlls/wldap32/option.c +++ b/dlls/wldap32/option.c @@ -273,6 +273,15 @@ ULONG CDECL ldap_get_optionW( LDAP *ld, int option, void *value ) return map_error( ret ); } + case WLDAP32_LDAP_OPT_GETDSNAME_FLAGS: + { + ULONG *flags = value; + if (!flags) return WLDAP32_LDAP_PARAM_ERROR; + FIXME( "LDAP_OPT_GETDSNAME_FLAGS: stub\n" ); + *flags = 0; + return WLDAP32_LDAP_SUCCESS; + } + case WLDAP32_LDAP_OPT_CACHE_ENABLE: case WLDAP32_LDAP_OPT_CACHE_FN_PTRS: case WLDAP32_LDAP_OPT_CACHE_STRATEGY: @@ -289,7 +298,6 @@ ULONG CDECL ldap_get_optionW( LDAP *ld, int option, void *value ) case WLDAP32_LDAP_OPT_ENCRYPT: case WLDAP32_LDAP_OPT_ERROR_STRING: case WLDAP32_LDAP_OPT_FAST_CONCURRENT_BIND: - case WLDAP32_LDAP_OPT_GETDSNAME_FLAGS: case WLDAP32_LDAP_OPT_HOST_REACHABLE: case WLDAP32_LDAP_OPT_PING_KEEP_ALIVE: case WLDAP32_LDAP_OPT_PING_LIMIT: -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7177
From: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/wldap32/option.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/wldap32/option.c b/dlls/wldap32/option.c index fb16d02d51e..aea5859b56a 100644 --- a/dlls/wldap32/option.c +++ b/dlls/wldap32/option.c @@ -611,6 +611,14 @@ ULONG CDECL ldap_set_optionW( LDAP *ld, int option, void *value ) return map_error( ret ); } + case WLDAP32_LDAP_OPT_GETDSNAME_FLAGS: + { + ULONG *flags = value; + if (!flags) return WLDAP32_LDAP_PARAM_ERROR; + FIXME( "LDAP_OPT_GETDSNAME_FLAGS: %08lx\n", *flags ); + return WLDAP32_LDAP_SUCCESS; + } + case WLDAP32_LDAP_OPT_CACHE_ENABLE: case WLDAP32_LDAP_OPT_CACHE_FN_PTRS: case WLDAP32_LDAP_OPT_CACHE_STRATEGY: @@ -635,7 +643,6 @@ ULONG CDECL ldap_set_optionW( LDAP *ld, int option, void *value ) case WLDAP32_LDAP_OPT_DNSDOMAIN_NAME: case WLDAP32_LDAP_OPT_ERROR_STRING: case WLDAP32_LDAP_OPT_FAST_CONCURRENT_BIND: - case WLDAP32_LDAP_OPT_GETDSNAME_FLAGS: case WLDAP32_LDAP_OPT_HOST_REACHABLE: case WLDAP32_LDAP_OPT_PING_KEEP_ALIVE: case WLDAP32_LDAP_OPT_PING_LIMIT: -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7177
From: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/wldap32/option.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/wldap32/option.c b/dlls/wldap32/option.c index aea5859b56a..96235eeb8e0 100644 --- a/dlls/wldap32/option.c +++ b/dlls/wldap32/option.c @@ -619,6 +619,14 @@ ULONG CDECL ldap_set_optionW( LDAP *ld, int option, void *value ) return WLDAP32_LDAP_SUCCESS; } + case WLDAP32_LDAP_OPT_PROMPT_CREDENTIALS: + { + ULONG *flags = value; + if (!flags) return WLDAP32_LDAP_PARAM_ERROR; + FIXME( "LDAP_OPT_PROMPT_CREDENTIALS: %08lx\n", *flags ); + return WLDAP32_LDAP_SUCCESS; + } + case WLDAP32_LDAP_OPT_CACHE_ENABLE: case WLDAP32_LDAP_OPT_CACHE_FN_PTRS: case WLDAP32_LDAP_OPT_CACHE_STRATEGY: @@ -647,7 +655,6 @@ ULONG CDECL ldap_set_optionW( LDAP *ld, int option, void *value ) case WLDAP32_LDAP_OPT_PING_KEEP_ALIVE: case WLDAP32_LDAP_OPT_PING_LIMIT: case WLDAP32_LDAP_OPT_PING_WAIT_TIME: - case WLDAP32_LDAP_OPT_PROMPT_CREDENTIALS: case WLDAP32_LDAP_OPT_REF_DEREF_CONN_PER_MSG: case WLDAP32_LDAP_OPT_REFERRAL_CALLBACK: case WLDAP32_LDAP_OPT_SASL_METHOD: -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7177
From: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/wldap32/option.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dlls/wldap32/option.c b/dlls/wldap32/option.c index 96235eeb8e0..3d10385b807 100644 --- a/dlls/wldap32/option.c +++ b/dlls/wldap32/option.c @@ -627,6 +627,12 @@ ULONG CDECL ldap_set_optionW( LDAP *ld, int option, void *value ) return WLDAP32_LDAP_SUCCESS; } + case WLDAP32_LDAP_OPT_REFERRAL_CALLBACK: + { + FIXME("LDAP_OPT_REFERRAL_CALLBACK: %p\n", value); + return WLDAP32_LDAP_SUCCESS; + } + case WLDAP32_LDAP_OPT_CACHE_ENABLE: case WLDAP32_LDAP_OPT_CACHE_FN_PTRS: case WLDAP32_LDAP_OPT_CACHE_STRATEGY: @@ -656,7 +662,6 @@ ULONG CDECL ldap_set_optionW( LDAP *ld, int option, void *value ) case WLDAP32_LDAP_OPT_PING_LIMIT: case WLDAP32_LDAP_OPT_PING_WAIT_TIME: case WLDAP32_LDAP_OPT_REF_DEREF_CONN_PER_MSG: - case WLDAP32_LDAP_OPT_REFERRAL_CALLBACK: case WLDAP32_LDAP_OPT_SASL_METHOD: case WLDAP32_LDAP_OPT_SECURITY_CONTEXT: case WLDAP32_LDAP_OPT_SEND_TIMEOUT: -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7177
This merge request was approved by Hans Leidekker. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7177
participants (3)
-
Dmitry Timoshkov -
Dmitry Timoshkov (@dmitry) -
Hans Leidekker (@hans)