diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2021-04-28 11:32:44 -0400 |
---|---|---|
committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2021-04-28 12:34:28 -0400 |
commit | 0af182baa2f35d91b8dfaf0b5a8fef06b77dd03a (patch) | |
tree | e38c0517595bffd75e5b3df06084fce8531c48f1 /src/core/frontend/applets | |
parent | b096ec68cdbf6f1064a8b6b855489d38c3e59f6a (diff) |
applets/web: Fix a use-after-free when passing in the URL string
The URL string was being deleted before being used, leading to a use-after-free occurring when it is used afterwards.
Fix this by taking the string by const ref to extend its lifetime, ensuring it doesn't get deleted before use.
Diffstat (limited to 'src/core/frontend/applets')
-rw-r--r-- | src/core/frontend/applets/web_browser.cpp | 4 | ||||
-rw-r--r-- | src/core/frontend/applets/web_browser.h | 9 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/core/frontend/applets/web_browser.cpp b/src/core/frontend/applets/web_browser.cpp index 50db6a654..be4736f47 100644 --- a/src/core/frontend/applets/web_browser.cpp +++ b/src/core/frontend/applets/web_browser.cpp @@ -12,7 +12,7 @@ WebBrowserApplet::~WebBrowserApplet() = default; DefaultWebBrowserApplet::~DefaultWebBrowserApplet() = default; void DefaultWebBrowserApplet::OpenLocalWebPage( - std::string_view local_url, std::function<void()> extract_romfs_callback, + const std::string& local_url, std::function<void()> extract_romfs_callback, std::function<void(Service::AM::Applets::WebExitReason, std::string)> callback) const { LOG_WARNING(Service_AM, "(STUBBED) called, backend requested to open local web page at {}", local_url); @@ -21,7 +21,7 @@ void DefaultWebBrowserApplet::OpenLocalWebPage( } void DefaultWebBrowserApplet::OpenExternalWebPage( - std::string_view external_url, + const std::string& external_url, std::function<void(Service::AM::Applets::WebExitReason, std::string)> callback) const { LOG_WARNING(Service_AM, "(STUBBED) called, backend requested to open external web page at {}", external_url); diff --git a/src/core/frontend/applets/web_browser.h b/src/core/frontend/applets/web_browser.h index 1c5ef19a9..d7bd44c27 100644 --- a/src/core/frontend/applets/web_browser.h +++ b/src/core/frontend/applets/web_browser.h @@ -16,11 +16,11 @@ public: virtual ~WebBrowserApplet(); virtual void OpenLocalWebPage( - std::string_view local_url, std::function<void()> extract_romfs_callback, + const std::string& local_url, std::function<void()> extract_romfs_callback, std::function<void(Service::AM::Applets::WebExitReason, std::string)> callback) const = 0; virtual void OpenExternalWebPage( - std::string_view external_url, + const std::string& external_url, std::function<void(Service::AM::Applets::WebExitReason, std::string)> callback) const = 0; }; @@ -28,11 +28,12 @@ class DefaultWebBrowserApplet final : public WebBrowserApplet { public: ~DefaultWebBrowserApplet() override; - void OpenLocalWebPage(std::string_view local_url, std::function<void()> extract_romfs_callback, + void OpenLocalWebPage(const std::string& local_url, + std::function<void()> extract_romfs_callback, std::function<void(Service::AM::Applets::WebExitReason, std::string)> callback) const override; - void OpenExternalWebPage(std::string_view external_url, + void OpenExternalWebPage(const std::string& external_url, std::function<void(Service::AM::Applets::WebExitReason, std::string)> callback) const override; }; |