adsldp: Fix IDirectorySearch::GetColumn() behaviour for not found case.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Dmitry Timoshkov 2020-03-30 15:58:06 +08:00 committed by Alexandre Julliard
parent 21959bf00a
commit 57f3d503c4
2 changed files with 17 additions and 1 deletions

View File

@ -1434,7 +1434,11 @@ exit:
} }
values = ldap_get_values_lenW(ldap->ld, ldap_ctx->entry, name); values = ldap_get_values_lenW(ldap->ld, ldap_ctx->entry, name);
if (!values) return ERROR_DS_NO_ATTRIBUTE_OR_VALUE; if (!values)
{
memset(col, 0, sizeof(*col));
return E_ADS_COLUMN_NOT_SET;
}
count = ldap_count_values_len(values); count = ldap_count_values_len(values);

View File

@ -417,6 +417,18 @@ todo_wine
ok(hr == E_ADS_BAD_PARAMETER, "got %#x\n", hr); ok(hr == E_ADS_BAD_PARAMETER, "got %#x\n", hr);
} }
hr = IDirectorySearch_GetFirstRow(ds, sh);
ok(hr == S_OK, "got %#x\n", hr);
memset(&col, 0x55, sizeof(col));
hr = IDirectorySearch_GetColumn(ds, sh, (WCHAR *)L"deadbeef", &col);
ok(hr == E_ADS_COLUMN_NOT_SET, "got %#x\n", hr);
ok(!col.pszAttrName, "got %p\n", col.pszAttrName);
ok(col.dwADsType == ADSTYPE_INVALID || broken(col.dwADsType != ADSTYPE_INVALID) /* XP */, "got %d\n", col.dwADsType);
ok(!col.pADsValues, "got %p\n", col.pADsValues);
ok(!col.dwNumValues, "got %u\n", col.dwNumValues);
ok(!col.hReserved, "got %p\n", col.hReserved);
hr = IDirectorySearch_CloseSearchHandle(ds, sh); hr = IDirectorySearch_CloseSearchHandle(ds, sh);
ok(hr == S_OK, "got %#x\n", hr); ok(hr == S_OK, "got %#x\n", hr);