From ca10760d2e7ea4f8718741592fd639f589247e53 Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Mon, 9 May 2022 10:56:29 -0500 Subject: [PATCH] mfplat: Allow NULL length pointer in IMFAttributes::GetAllocatedString. Signed-off-by: Andrew Eikum Signed-off-by: Alexandre Julliard --- dlls/mfplat/main.c | 3 ++- dlls/mfplat/tests/mfplat.c | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c index cee052defeb..08195bca448 100644 --- a/dlls/mfplat/main.c +++ b/dlls/mfplat/main.c @@ -2670,7 +2670,8 @@ HRESULT attributes_GetAllocatedString(struct attributes *attributes, REFGUID key if (SUCCEEDED(hr)) { *value = attrval.pwszVal; - *length = lstrlenW(*value); + if (length) + *length = lstrlenW(*value); } return hr; diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index 8d21f2ed60e..8f18fcb293d 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -1638,6 +1638,11 @@ static void test_attributes(void) ok(hr == S_OK, "Failed to get string length, hr %#lx.\n", hr); ok(string_length == lstrlenW(stringW), "Unexpected length %u.\n", string_length); + hr = IMFAttributes_GetAllocatedString(attributes, &DUMMY_GUID1, &string, NULL); + ok(hr == S_OK, "Failed to get allocated string, hr %#lx.\n", hr); + ok(!lstrcmpW(string, stringW), "Unexpected string %s.\n", wine_dbgstr_w(string)); + CoTaskMemFree(string); + string_length = 0xdeadbeef; hr = IMFAttributes_GetAllocatedString(attributes, &DUMMY_GUID1, &string, &string_length); ok(hr == S_OK, "Failed to get allocated string, hr %#lx.\n", hr);