I am using ldap_search_s
(ldap_search_sW
) to extract AD user groups. It works when the attrs
parameter (PZPWSTR
, or wchar_t**
) is NULL
, but when I tried to specify it I got Exception at 0x7ffc1885bd95, code: 0xc0000005: read access violation at: 0xfffffffffffffffe
.
wchar_t *attrs[] = {
const_cast<wchar_t *>(L"memberOf"),
const_cast<wchar_t *>(L"")
};
ret = ldap_search_s(pLdap, const_cast<wchar_t *>(dn.c_str()), LDAP_SCOPE_SUBTREE, const_cast<wchar_t *>(filter.c_str()), attrs, 0, &pSearchResult);
According to the docs it needs to be "a null-terminated array of null-terminated strings indicating the attributes to return for each matching entry. Pass NULL to retrieve all available attributes."
I tried different ways using vectors, arrays, etc. and always get the same error.
The example in MSDN shows only the ANSI version, but it seems to be a very similar array of pointers.
Your array is not null-terminated. NULL and an empty string are not the same.
Use NULL
(or nullptr
in modern C++).
wchar_t *attrs[] = {
const_cast<wchar_t *>(L"memberOf"),
nullptr
};
User contributions licensed under CC BY-SA 3.0