From c9e41538268fd2a3f8d4e354ead24cfff14920f3 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Thu, 27 Feb 2025 21:22:04 -0800 Subject: [PATCH] Fix hypothetical OOB in toml parser (#17789) --- src/toml/toml_lexer.zig | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/toml/toml_lexer.zig b/src/toml/toml_lexer.zig index ce42d215b3..fa3bbf2ce4 100644 --- a/src/toml/toml_lexer.zig +++ b/src/toml/toml_lexer.zig @@ -156,11 +156,18 @@ pub const Lexer = struct { } inline fn nextCodepointSlice(it: *Lexer) []const u8 { + if (it.current >= it.source.contents.len) { + return ""; + } const cp_len = strings.wtf8ByteSequenceLengthWithInvalid(it.source.contents.ptr[it.current]); return if (!(cp_len + it.current > it.source.contents.len)) it.source.contents[it.current .. cp_len + it.current] else ""; } inline fn nextCodepoint(it: *Lexer) CodePoint { + if (it.current >= it.source.contents.len) { + it.end = it.source.contents.len; + return -1; + } const cp_len = strings.wtf8ByteSequenceLengthWithInvalid(it.source.contents.ptr[it.current]); const slice = if (!(cp_len + it.current > it.source.contents.len)) it.source.contents[it.current .. cp_len + it.current] else "";