Hans Leidekker : wldap32: Avoid a crash with tracing on.

Alexandre Julliard julliard at winehq.org
Tue Apr 20 16:27:45 CDT 2021


Module: wine
Branch: master
Commit: 885c480d2e63895693b51a858f0745d2fd2468b4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=885c480d2e63895693b51a858f0745d2fd2468b4

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Apr 20 11:42:20 2021 +0200

wldap32: Avoid a crash with tracing on.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wldap32/option.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/dlls/wldap32/option.c b/dlls/wldap32/option.c
index 1037b73174b..0f3d10e1204 100644
--- a/dlls/wldap32/option.c
+++ b/dlls/wldap32/option.c
@@ -368,9 +368,10 @@ static BOOL query_supported_server_ctrls( LDAP *ld )
 {
     char *attrs[] = { (char *)"supportedControl", NULL };
     void *res, *entry;
+    struct bervalU **ctrls = SERVER_CTRLS(ld);
     ULONG ret;
 
-    if (SERVER_CTRLS(ld)) return TRUE;
+    if (ctrls) return TRUE;
 
     ret = map_error( ldap_funcs->fn_ldap_search_ext_s( CTX(ld), (char *)"", LDAP_SCOPE_BASE, (char *)"(objectClass=*)",
                                                        attrs, FALSE, NULL, NULL, NULL, 0, &res ) );
@@ -380,17 +381,14 @@ static BOOL query_supported_server_ctrls( LDAP *ld )
     if (entry)
     {
         ULONG count, i;
-        struct bervalU **ctrls = SERVER_CTRLS(ld);
-
-        *(struct bervalU ***)&SERVER_CTRLS(ld) = ldap_funcs->fn_ldap_get_values_len( CTX(ld), entry, attrs[0] );
-        count = ldap_funcs->fn_ldap_count_values_len( SERVER_CTRLS(ld) );
-        for (i = 0; i < count; i++)
-            TRACE("%u: %s\n", i, debugstr_an( ctrls[i]->bv_val, ctrls[i]->bv_len ));
+        ctrls = ldap_funcs->fn_ldap_get_values_len( CTX(ld), entry, attrs[0] );
+        count = ldap_funcs->fn_ldap_count_values_len( ctrls );
+        for (i = 0; i < count; i++) TRACE("%u: %s\n", i, debugstr_an( ctrls[i]->bv_val, ctrls[i]->bv_len ));
+        *(struct bervalU ***)&SERVER_CTRLS(ld) = ctrls;
     }
 
     ldap_funcs->fn_ldap_msgfree( res );
-
-    return SERVER_CTRLS(ld) != NULL;
+    return ctrls != NULL;
 }
 
 static BOOL is_supported_server_ctrls( LDAP *ld, LDAPControlU **ctrls )




More information about the wine-cvs mailing list