Piotr Caban : fusion: Fix IAssemblyNameImpl_GetDisplayName behavior on too small buffer.

Alexandre Julliard julliard at winehq.org
Fri Nov 10 17:21:28 CST 2017


Module: wine
Branch: master
Commit: d790b160f93bcd6f88d7212678dca0f07e36f044
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d790b160f93bcd6f88d7212678dca0f07e36f044

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Nov 10 12:25:10 2017 +0100

fusion: Fix IAssemblyNameImpl_GetDisplayName behavior on too small buffer.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/fusion/asmname.c       | 5 ++++-
 dlls/fusion/tests/asmname.c | 7 +++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/dlls/fusion/asmname.c b/dlls/fusion/asmname.c
index 6be8bf6..96345b6d 100644
--- a/dlls/fusion/asmname.c
+++ b/dlls/fusion/asmname.c
@@ -332,7 +332,10 @@ static HRESULT WINAPI IAssemblyNameImpl_GetDisplayName(IAssemblyName *iface,
         size += lstrlenW(separator) + lstrlenW(procarch) + lstrlenW(equals) + lstrlenW(name->procarch);
 
     if (size > *pccDisplayName)
-        return S_FALSE;
+    {
+        *pccDisplayName = size;
+        return E_NOT_SUFFICIENT_BUFFER;
+    }
 
     /* Construct the string */
     lstrcpyW(szDisplayName, name->name);
diff --git a/dlls/fusion/tests/asmname.c b/dlls/fusion/tests/asmname.c
index aa7e11b..e1ef1d8 100644
--- a/dlls/fusion/tests/asmname.c
+++ b/dlls/fusion/tests/asmname.c
@@ -537,6 +537,13 @@ static void test_CreateAssemblyNameObject(void)
     ok(str[0] == 'a', "got %c\n", str[0]);
     ok(size == 5, "got %u\n", size);
 
+    size = 0;
+    str[0] = 'a';
+    hr = IAssemblyName_GetDisplayName(name, str, &size, ASM_DISPLAYF_FULL);
+    ok(hr == E_NOT_SUFFICIENT_BUFFER, "got %08x\n", hr);
+    ok(str[0] == 'a', "got %c\n", str[0]);
+    ok(size == 5, "Wrong size %u\n", size);
+
     size = MAX_PATH;
     hr = IAssemblyName_GetDisplayName(name, str, &size, ASM_DISPLAYF_FULL);
     ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);




More information about the wine-cvs mailing list