From 7c609f07b4e1e9a5f0c0ef38329c461e1a9b3ea8 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Thu, 13 Oct 2016 10:07:08 +0000 Subject: [PATCH] dpnet: Correct GetComponentByName to return the correct buffer size. Signed-off-by: Alistair Leslie-Hughes Signed-off-by: Alexandre Julliard --- dlls/dpnet/address.c | 4 ++-- dlls/dpnet/tests/address.c | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/dpnet/address.c b/dlls/dpnet/address.c index d87d4e7bef1..6305fe7547a 100644 --- a/dlls/dpnet/address.c +++ b/dlls/dpnet/address.c @@ -377,9 +377,9 @@ static HRESULT WINAPI IDirectPlay8AddressImpl_GetComponentByName(IDirectPlay8Add struct component *entry; DWORD i; - TRACE("(%p)->(%p %p %p %p)\n", This, pwszName, pvBuffer, pdwBufferSize, pdwDataType); + TRACE("(%p)->(%s %p %p %p)\n", This, debugstr_w(pwszName), pvBuffer, pdwBufferSize, pdwDataType); - if(!pwszName || !pdwBufferSize || !pdwDataType || (!pvBuffer && pdwBufferSize)) + if(!pwszName || !pdwBufferSize || !pdwDataType || (!pvBuffer && *pdwBufferSize)) return E_POINTER; for(i=0; i < This->comp_count; i++) diff --git a/dlls/dpnet/tests/address.c b/dlls/dpnet/tests/address.c index cb226f9e6c1..dd0ef23fa75 100644 --- a/dlls/dpnet/tests/address.c +++ b/dlls/dpnet/tests/address.c @@ -123,6 +123,15 @@ static void address_addcomponents(void) hr = IDirectPlay8Address_AddComponent(localaddr, DPNA_KEY_HOSTNAME, &localhost, sizeof(localhost)+2, DPNA_DATATYPE_STRING); ok(hr == DPNERR_INVALIDPARAM, "got 0x%08x\n", hr); + size = 0; + hr = IDirectPlay8Address_GetComponentByName(localaddr, DPNA_KEY_HOSTNAME, NULL, &size, &type); + ok(hr == DPNERR_BUFFERTOOSMALL, "got 0x%08x\n", hr); + ok(size == sizeof(localhost), "Invalid string length: %d\n", size); + + size = 1; + hr = IDirectPlay8Address_GetComponentByName(localaddr, DPNA_KEY_HOSTNAME, NULL, &size, &type); + ok(hr == E_POINTER, "got 0x%08x\n", hr); + size = sizeof(buffer); hr = IDirectPlay8Address_GetComponentByName(localaddr, DPNA_KEY_HOSTNAME, buffer, &size, &type); ok(hr == S_OK, "got 0x%08x\n", hr);