Dmitry Timoshkov : adsldp: Map "1.2.840.113556.1.4.906" to ADSTYPE_LARGE_INTEGER.
Alexandre Julliard
julliard at winehq.org
Tue Apr 7 15:27:17 CDT 2020
Module: wine
Branch: master
Commit: 38e95ed2227dd3f0fc3d1394c884265d43e3b283
URL: https://source.winehq.org/git/wine.git/?a=commit;h=38e95ed2227dd3f0fc3d1394c884265d43e3b283
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Tue Apr 7 18:14:05 2020 +0800
adsldp: Map "1.2.840.113556.1.4.906" to ADSTYPE_LARGE_INTEGER.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/adsldp/adsldp.c | 23 +++++++++++++++++------
dlls/adsldp/schema.c | 2 ++
2 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/dlls/adsldp/adsldp.c b/dlls/adsldp/adsldp.c
index 8897545e4f..5504a376ba 100644
--- a/dlls/adsldp/adsldp.c
+++ b/dlls/adsldp/adsldp.c
@@ -1478,26 +1478,37 @@ static HRESULT add_column_values(LDAP_namespace *ldap, struct ldap_search_contex
}
case ADSTYPE_INTEGER:
+ case ADSTYPE_LARGE_INTEGER:
{
- WCHAR **values = ldap_get_valuesW(ldap->ld, ldap_ctx->entry, name);
+ struct berval **values = ldap_get_values_lenW(ldap->ld, ldap_ctx->entry, name);
if (!values)
return E_ADS_COLUMN_NOT_SET;
- count = ldap_count_valuesW(values);
+ count = ldap_count_values_len(values);
col->pADsValues = heap_alloc_zero(count * sizeof(col->pADsValues[0]));
if (!col->pADsValues)
{
- ldap_value_freeW(values);
+ ldap_value_free_len(values);
return E_OUTOFMEMORY;
}
for (i = 0; i < count; i++)
{
- col->pADsValues[i].u.Integer = wcstol(values[i], NULL, 10);
- TRACE("%s => %d\n", debugstr_w(values[i]), col->pADsValues[i].u.Integer);
+ col->pADsValues[i].dwType = type;
+
+ if (type == ADSTYPE_LARGE_INTEGER)
+ {
+ col->pADsValues[i].u.LargeInteger.QuadPart = _atoi64(values[i]->bv_val);
+ TRACE("%s => %s\n", debugstr_an(values[i]->bv_val, values[i]->bv_len), wine_dbgstr_longlong(col->pADsValues[i].u.LargeInteger.QuadPart));
+ }
+ else
+ {
+ col->pADsValues[i].u.Integer = atol(values[i]->bv_val);
+ TRACE("%s => %d\n", debugstr_an(values[i]->bv_val, values[i]->bv_len), col->pADsValues[i].u.Integer);
+ }
}
- ldap_value_freeW(values);
+ ldap_value_free_len(values);
col->hReserved = NULL;
break;
}
diff --git a/dlls/adsldp/schema.c b/dlls/adsldp/schema.c
index 6965dc3274..e997c6f98e 100644
--- a/dlls/adsldp/schema.c
+++ b/dlls/adsldp/schema.c
@@ -101,6 +101,8 @@ ADSTYPEENUM get_schema_type(const WCHAR *name, const struct attribute_type *at,
return ADSTYPE_CASE_IGNORE_STRING;
if (!wcscmp(type->syntax, L"1.3.6.1.4.1.1466.115.121.1.40"))
return ADSTYPE_OCTET_STRING;
+ if (!wcscmp(type->syntax, L"1.2.840.113556.1.4.906"))
+ return ADSTYPE_LARGE_INTEGER;
if (!wcscmp(type->syntax, L"1.2.840.113556.1.4.907"))
return ADSTYPE_NT_SECURITY_DESCRIPTOR;
More information about the wine-cvs
mailing list