From 9a59f6bc574e3b9dfa09ac33e6dd951f105f87bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wierci=C5=84ski?= Date: Thu, 29 Feb 2024 16:53:07 +0100 Subject: [PATCH] wasm: Dont access QNetworkReply header data through dangling pointer Fixes: QTBUG-122893 Pick-to: 6.6 6.5 Change-Id: I3768fdffaec7be4ec0b559fdb365600220e648d1 Reviewed-by: Lorn Potter (cherry picked from commit a5b00cefef12999e9a213943855abe6bc0ab5365) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qeventdispatcher_wasm_p.h | 2 +- src/network/access/qnetworkreplywasmimpl.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_wasm_p.h b/src/corelib/kernel/qeventdispatcher_wasm_p.h index 564bbffa47e..09231e0d4c4 100644 --- a/src/corelib/kernel/qeventdispatcher_wasm_p.h +++ b/src/corelib/kernel/qeventdispatcher_wasm_p.h @@ -53,6 +53,7 @@ public: void interrupt() override; void wakeUp() override; + static void runOnMainThread(std::function fn); static void runOnMainThreadAsync(std::function fn); static void socketSelect(int timeout, int socket, bool waitForRead, bool waitForWrite, bool *selectForRead, bool *selectForWrite, bool *socketDisconnect); @@ -89,7 +90,6 @@ private: bool *selectForRead, bool *selectForWrite, bool *socketDisconnect); static void run(std::function fn); - static void runOnMainThread(std::function fn); static void runAsync(std::function fn); static QEventDispatcherWasm *g_mainThreadEventDispatcher; diff --git a/src/network/access/qnetworkreplywasmimpl.cpp b/src/network/access/qnetworkreplywasmimpl.cpp index f7380a10d9d..eb3e50dec86 100644 --- a/src/network/access/qnetworkreplywasmimpl.cpp +++ b/src/network/access/qnetworkreplywasmimpl.cpp @@ -297,7 +297,7 @@ void QNetworkReplyWasmImplPrivate::doSendRequest() attr.destinationPath = destinationPath.constData(); auto url = request.url().toString().toUtf8(); - QEventDispatcherWasm::runOnMainThreadAsync([attr, url]() mutable { + QEventDispatcherWasm::runOnMainThread([attr, url]() mutable { emscripten_fetch(&attr, url); }); state = Working;