From e6eb8a9f06a8617aec458367ea2b47ca91ac687e Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 29 Sep 2022 13:31:22 +0200 Subject: [PATCH] LibWeb: Fix crash in get_response_mime_type() We were creating a ref-counted HeaderList object on the stack, which then crashed in ~RefCounted() on scope exit, since nobody had adopted it. --- Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp index 472b1802d4..f9b292638f 100644 --- a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp +++ b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp @@ -215,17 +215,17 @@ MimeSniff::MimeType XMLHttpRequest::get_final_mime_type() const MimeSniff::MimeType XMLHttpRequest::get_response_mime_type() const { // FIXME: Use an actual HeaderList for XHR headers. - Fetch::Infrastructure::HeaderList header_list; + auto header_list = make_ref_counted(); for (auto const& entry : m_response_headers) { auto header = Fetch::Infrastructure::Header { .name = MUST(ByteBuffer::copy(entry.key.bytes())), .value = MUST(ByteBuffer::copy(entry.value.bytes())), }; - MUST(header_list.append(move(header))); + MUST(header_list->append(move(header))); } // 1. Let mimeType be the result of extracting a MIME type from xhr’s response’s header list. - auto mime_type = header_list.extract_mime_type(); + auto mime_type = header_list->extract_mime_type(); // 2. If mimeType is failure, then set mimeType to text/xml. if (!mime_type.has_value())