From bb773295caa4c731c14bae1985920aa5f3d164db Mon Sep 17 00:00:00 2001 From: Solomon Sklash Date: Fri, 9 Jul 2021 00:34:21 +0000 Subject: [PATCH 1/2] Free dynamically allocated BSTR. --- src/inlineExecute-Assembly.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/inlineExecute-Assembly.c b/src/inlineExecute-Assembly.c index f956cf3..3913fad 100644 --- a/src/inlineExecute-Assembly.c +++ b/src/inlineExecute-Assembly.c @@ -438,7 +438,9 @@ void go(char* args, int length) {//Executes .NET assembly in memory for (long i = 0; i < argumentCount; i++) { //Insert the string from argumentsArray[i] into the safearray - OLEAUT32$SafeArrayPutElement(vtPsa.parray, &i, OLEAUT32$SysAllocString(argumentsArray[i])); + OLEAUT32$SafeArrayPutElement(vtPsa.parray, &i, bstrArg); + OLEAUT32$SysFreeString( bstrArg ); + BSTR bstrArg = OLEAUT32$SysAllocString(argumentsArray[i]); } //Break ETW From 18e450e9308a2dfaeb9561cf101e90f9d517a960 Mon Sep 17 00:00:00 2001 From: Solomon Sklash Date: Fri, 9 Jul 2021 00:35:33 +0000 Subject: [PATCH 2/2] Added definition for SysFreeString. --- src/inlineExecute-Assembly.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/inlineExecute-Assembly.h b/src/inlineExecute-Assembly.h index e77eee4..269b735 100644 --- a/src/inlineExecute-Assembly.h +++ b/src/inlineExecute-Assembly.h @@ -43,6 +43,7 @@ WINBASEAPI HRESULT WINAPI OLEAUT32$SafeArrayPutElement(SAFEARRAY* psa, LONG* rgI WINBASEAPI HRESULT WINAPI OLEAUT32$SafeArrayDestroy(SAFEARRAY* psa); WINBASEAPI HRESULT WINAPI OLEAUT32$VariantClear(VARIANTARG* pvarg); WINBASEAPI BSTR WINAPI OLEAUT32$SysAllocString(const OLECHAR* psz); +WINBASEAPI VOID WINAPI OLEAUT32$SysFreeString(BSTR bstrString); #define intZeroMemory(addr,size) memset((addr),0,size) #define intAlloc(size) KERNEL32$HeapAlloc(KERNEL32$GetProcessHeap(), HEAP_ZERO_MEMORY, size)