diff --git a/dlls/wldap32/libldap.c b/dlls/wldap32/libldap.c index 8872421dabc..592e526ecdc 100644 --- a/dlls/wldap32/libldap.c +++ b/dlls/wldap32/libldap.c @@ -53,7 +53,14 @@ C_ASSERT( sizeof(LDAPSortKeyU) == sizeof(LDAPSortKey) ); C_ASSERT( sizeof(LDAPVLVInfoU) == sizeof(LDAPVLVInfo) ); C_ASSERT( sizeof(LDAPAPIInfoU) == sizeof(LDAPAPIInfo) ); C_ASSERT( sizeof(LDAPAPIFeatureInfoU) == sizeof(LDAPAPIFeatureInfo) ); -C_ASSERT( sizeof(struct timevalU) == sizeof(struct timeval) ); + +static struct timeval *convert_timeval(const struct timevalU *tvu, struct timeval *tv) +{ + if (!tvu) return NULL; + tv->tv_sec = tvu->tv_sec; + tv->tv_usec = tvu->tv_usec; + return tv; +} #define WLDAP32_LBER_ERROR (~0l) @@ -488,8 +495,9 @@ static NTSTATUS wrap_ldap_rename_s( void *args ) static NTSTATUS wrap_ldap_result( void *args ) { struct ldap_result_params *params = args; + struct timeval tv; return ldap_result( params->ld, params->msgid, params->all, - (struct timeval *)params->timeout, (LDAPMessage **)params->result ); + convert_timeval(params->timeout, &tv), (LDAPMessage **)params->result ); } static NTSTATUS wrap_ldap_sasl_bind( void *args ) @@ -555,18 +563,20 @@ static NTSTATUS wrap_ldap_sasl_interactive_bind_s( void *args ) static NTSTATUS wrap_ldap_search_ext( void *args ) { struct ldap_search_ext_params *params = args; + struct timeval tv; return ldap_search_ext( params->ld, params->base, params->scope, params->filter, params->attrs, params->attrsonly, (LDAPControl **)params->serverctrls, - (LDAPControl **)params->clientctrls, (struct timeval *)params->timeout, + (LDAPControl **)params->clientctrls, convert_timeval(params->timeout, &tv), params->sizelimit, (int *)params->msg ); } static NTSTATUS wrap_ldap_search_ext_s( void *args ) { struct ldap_search_ext_s_params *params = args; + struct timeval tv; return ldap_search_ext_s( params->ld, params->base, params->scope, params->filter, params->attrs, params->attrsonly, (LDAPControl **)params->serverctrls, - (LDAPControl **)params->clientctrls, (struct timeval *)params->timeout, + (LDAPControl **)params->clientctrls, convert_timeval(params->timeout, &tv), params->sizelimit, (LDAPMessage **)params->result ); }