From 1247c8aa28d9128a12bb3438eb41cd6a8918f72a Mon Sep 17 00:00:00 2001 From: stffabi Date: Mon, 18 Jul 2022 10:57:30 +0200 Subject: [PATCH] [windows] Fix stack corruption when using ICoreWebView2HttpHeadersCollectionIterator (#1589) The API expects a `BOOL *` with `typedef int BOOL` therefore we need to use a `int32` on the stack. --- .../edge/ICoreWebView2HttpHeadersCollectionIterator.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/v2/internal/frontend/desktop/windows/go-webview2/pkg/edge/ICoreWebView2HttpHeadersCollectionIterator.go b/v2/internal/frontend/desktop/windows/go-webview2/pkg/edge/ICoreWebView2HttpHeadersCollectionIterator.go index be2536b92..45280f417 100644 --- a/v2/internal/frontend/desktop/windows/go-webview2/pkg/edge/ICoreWebView2HttpHeadersCollectionIterator.go +++ b/v2/internal/frontend/desktop/windows/go-webview2/pkg/edge/ICoreWebView2HttpHeadersCollectionIterator.go @@ -23,7 +23,7 @@ func (i *ICoreWebView2HttpHeadersCollectionIterator) Release() error { } func (i *ICoreWebView2HttpHeadersCollectionIterator) HasCurrentHeader() (bool, error) { - var hasHeader bool + var hasHeader int32 res, _, err := i.vtbl.GetHasCurrentHeader.Call( uintptr(unsafe.Pointer(i)), uintptr(unsafe.Pointer(&hasHeader)), @@ -34,7 +34,7 @@ func (i *ICoreWebView2HttpHeadersCollectionIterator) HasCurrentHeader() (bool, e if windows.Handle(res) != windows.S_OK { return false, syscall.Errno(res) } - return hasHeader, nil + return hasHeader != 0, nil } func (i *ICoreWebView2HttpHeadersCollectionIterator) GetCurrentHeader() (string, string, error) { @@ -61,7 +61,7 @@ func (i *ICoreWebView2HttpHeadersCollectionIterator) GetCurrentHeader() (string, } func (i *ICoreWebView2HttpHeadersCollectionIterator) MoveNext() (bool, error) { - var next bool + var next int32 res, _, err := i.vtbl.MoveNext.Call( uintptr(unsafe.Pointer(i)), uintptr(unsafe.Pointer(&next)), @@ -72,5 +72,5 @@ func (i *ICoreWebView2HttpHeadersCollectionIterator) MoveNext() (bool, error) { if windows.Handle(res) != windows.S_OK { return false, syscall.Errno(res) } - return next, nil + return next != 0, nil }