1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 03:27:44 +00:00

Ladybird: Store the WebContent QSocketNotifier on the stack

This was being heap allocated with naked-new and never freed. Caught by
AddressSanitizer.
This commit is contained in:
Timothy Flynn 2023-01-31 08:45:11 -05:00 committed by Linus Groh
parent ac80475a1f
commit 9fd54e1f90
2 changed files with 7 additions and 5 deletions

View file

@ -49,7 +49,6 @@
#include <QPaintEvent>
#include <QPainter>
#include <QScrollBar>
#include <QSocketNotifier>
#include <QTextEdit>
#include <QTimer>
#include <QToolTip>
@ -607,8 +606,10 @@ void WebContentView::create_client()
auto new_client = MUST(adopt_nonnull_ref_or_enomem(new (nothrow) WebView::WebContentClient(std::move(socket), *this)));
new_client->set_fd_passing_socket(MUST(Core::Stream::LocalSocket::adopt_fd(ui_fd_passing_fd)));
auto* notifier = new QSocketNotifier(new_client->socket().fd().value(), QSocketNotifier::Type::Read);
QObject::connect(notifier, &QSocketNotifier::activated, [new_client = new_client.ptr()] {
m_web_content_notifier.setSocket(new_client->socket().fd().value());
m_web_content_notifier.setEnabled(true);
QObject::connect(&m_web_content_notifier, &QSocketNotifier::activated, [new_client = new_client.ptr()] {
if (auto notifier = new_client->socket().notifier())
notifier->on_ready_to_read();
});