mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 15:10:19 +00:00
LibIDL: Fix use-after-free in GenerateWindowOrWorkerInterfaces
Some checks are pending
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
Some checks are pending
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
`lexical_bases` was storing `StringView`s into `ByteString`s returned from `LexicalPath::string()` that might no longer exist.
This commit is contained in:
parent
63873f3809
commit
c3783cf3bd
Notes:
github-actions[bot]
2024-11-16 13:40:52 +00:00
Author: https://github.com/yyny Commit: https://github.com/LadybirdBrowser/ladybird/commit/c3783cf3bd8 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2371
4 changed files with 8 additions and 9 deletions
|
@ -1250,7 +1250,7 @@ Interface& Parser::parse()
|
|||
return interface;
|
||||
}
|
||||
|
||||
Parser::Parser(ByteString filename, StringView contents, Vector<StringView> import_base_paths)
|
||||
Parser::Parser(ByteString filename, StringView contents, Vector<ByteString> import_base_paths)
|
||||
: import_base_paths(move(import_base_paths))
|
||||
, filename(move(filename))
|
||||
, input(contents)
|
||||
|
@ -1258,7 +1258,7 @@ Parser::Parser(ByteString filename, StringView contents, Vector<StringView> impo
|
|||
{
|
||||
}
|
||||
|
||||
Parser::Parser(Parser* parent, ByteString filename, StringView contents, Vector<StringView> import_base_paths)
|
||||
Parser::Parser(Parser* parent, ByteString filename, StringView contents, Vector<ByteString> import_base_paths)
|
||||
: import_base_paths(move(import_base_paths))
|
||||
, filename(move(filename))
|
||||
, input(contents)
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace IDL {
|
|||
|
||||
class Parser {
|
||||
public:
|
||||
Parser(ByteString filename, StringView contents, Vector<StringView> import_base_paths);
|
||||
Parser(ByteString filename, StringView contents, Vector<ByteString> import_base_paths);
|
||||
Interface& parse();
|
||||
|
||||
Vector<ByteString> imported_files() const;
|
||||
|
@ -35,7 +35,7 @@ private:
|
|||
Yes,
|
||||
};
|
||||
|
||||
Parser(Parser* parent, ByteString filename, StringView contents, Vector<StringView> import_base_path);
|
||||
Parser(Parser* parent, ByteString filename, StringView contents, Vector<ByteString> import_base_path);
|
||||
|
||||
void assert_specific(char ch);
|
||||
void assert_string(StringView expected);
|
||||
|
@ -68,7 +68,7 @@ private:
|
|||
ByteString parse_identifier_ending_with_space();
|
||||
ByteString parse_identifier_ending_with_space_or(auto... possible_terminating_characters);
|
||||
|
||||
Vector<StringView> import_base_paths;
|
||||
Vector<ByteString> import_base_paths;
|
||||
ByteString filename;
|
||||
StringView input;
|
||||
LineTrackingLexer lexer;
|
||||
|
|
|
@ -21,7 +21,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
{
|
||||
Core::ArgsParser args_parser;
|
||||
StringView path;
|
||||
Vector<StringView> import_base_paths;
|
||||
Vector<ByteString> import_base_paths;
|
||||
StringView output_path = "-"sv;
|
||||
StringView depfile_path;
|
||||
StringView depfile_prefix;
|
||||
|
|
|
@ -356,11 +356,10 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
VERIFY(!paths.is_empty());
|
||||
VERIFY(!base_paths.is_empty());
|
||||
|
||||
Vector<StringView> lexical_bases;
|
||||
Vector<ByteString> lexical_bases;
|
||||
for (auto const& base_path : base_paths) {
|
||||
VERIFY(!base_path.is_empty());
|
||||
LexicalPath lexical_path(base_path);
|
||||
lexical_bases.append(lexical_path.string());
|
||||
lexical_bases.append(base_path);
|
||||
}
|
||||
|
||||
// Read in all IDL files, we must own the storage for all of these for the lifetime of the program
|
||||
|
|
Loading…
Reference in a new issue