From f28c7c3d8b21d58a603b3077bcd432d8b811bb45 Mon Sep 17 00:00:00 2001 From: dahall Date: Mon, 20 Sep 2021 09:32:34 -0600 Subject: [PATCH] Fixed bug in `SafeProcThreadAttributeList.Create` (#249) --- PInvoke/Kernel32/ProcessThreadsApi.cs | 2 +- UnitTests/PInvoke/Kernel32/ProcessThreadsTests.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/PInvoke/Kernel32/ProcessThreadsApi.cs b/PInvoke/Kernel32/ProcessThreadsApi.cs index 97f0d306..5986858a 100644 --- a/PInvoke/Kernel32/ProcessThreadsApi.cs +++ b/PInvoke/Kernel32/ProcessThreadsApi.cs @@ -7568,7 +7568,7 @@ namespace Vanara.PInvoke { var pVal = new PinnedObject(value); values.Add((attr, value, pVal)); - if (!UpdateProcThreadAttribute(handle, 0, attr, pVal, Marshal.SizeOf(value))) + if (!UpdateProcThreadAttribute(handle, 0, attr, pVal, InteropExtensions.SizeOf(value))) Win32Error.ThrowLastError(); } } diff --git a/UnitTests/PInvoke/Kernel32/ProcessThreadsTests.cs b/UnitTests/PInvoke/Kernel32/ProcessThreadsTests.cs index 304661d4..0a229069 100644 --- a/UnitTests/PInvoke/Kernel32/ProcessThreadsTests.cs +++ b/UnitTests/PInvoke/Kernel32/ProcessThreadsTests.cs @@ -452,12 +452,15 @@ namespace Vanara.PInvoke.Tests Assert.That(PROC_THREAD_ATTRIBUTE.PROC_THREAD_ATTRIBUTE_HANDLE_LIST, Is.EqualTo(new UIntPtr(0x20002))); Assert.That(() => { + using var p2 = CreateProcess("cmd.exe"); var l = SafeProcThreadAttributeList.Create(new Dictionary { {PROC_THREAD_ATTRIBUTE.PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR, new PROCESSOR_NUMBER(0, 2) }, {PROC_THREAD_ATTRIBUTE.PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY, 0x00000001UL }, + {PROC_THREAD_ATTRIBUTE.PROC_THREAD_ATTRIBUTE_HANDLE_LIST, new HANDLE[] { p2 } }, }); l.Dispose(); + p2.Close(); }, Throws.Nothing); }