mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-15 08:16:13 +03:00
fuzz: src/terminal/stream.zig
osc.zig: undefined pointer was dereferenced when warning was issued for handler missing Parser.zig: too many parameters was not handled in the final case Parser.zig: parameters being too long (>255 digits) was not handled
This commit is contained in:
@ -373,6 +373,9 @@ fn doAction(self: *Parser, action: TransitionAction, c: u8) ?Action {
|
||||
break :param null;
|
||||
}
|
||||
|
||||
// Ignore parameters that are too long
|
||||
if (self.param_acc_idx == std.math.maxInt(u8)) break :param null;
|
||||
|
||||
// A numeric value. Add it to our accumulator.
|
||||
if (self.param_acc_idx > 0) {
|
||||
self.param_acc *|= 10;
|
||||
@ -388,6 +391,9 @@ fn doAction(self: *Parser, action: TransitionAction, c: u8) ?Action {
|
||||
break :osc_put null;
|
||||
},
|
||||
.csi_dispatch => csi_dispatch: {
|
||||
// Ignore too many parameters
|
||||
if (self.params_idx >= MAX_PARAMS) break :csi_dispatch null;
|
||||
|
||||
// Finalize parameters if we have one
|
||||
if (self.param_acc_idx > 0) {
|
||||
self.params[self.params_idx] = self.param_acc;
|
||||
|
@ -284,7 +284,7 @@ pub const Parser = struct {
|
||||
|
||||
.@"0" => switch (c) {
|
||||
';' => {
|
||||
self.command = .{ .change_window_title = undefined };
|
||||
self.command = .{ .change_window_title = &.{} };
|
||||
|
||||
self.state = .string;
|
||||
self.temp_state = .{ .str = &self.command.change_window_title };
|
||||
@ -328,7 +328,7 @@ pub const Parser = struct {
|
||||
.@"2" => switch (c) {
|
||||
'2' => self.state = .@"22",
|
||||
';' => {
|
||||
self.command = .{ .change_window_title = undefined };
|
||||
self.command = .{ .change_window_title = &.{} };
|
||||
|
||||
self.state = .string;
|
||||
self.temp_state = .{ .str = &self.command.change_window_title };
|
||||
@ -339,7 +339,7 @@ pub const Parser = struct {
|
||||
|
||||
.@"22" => switch (c) {
|
||||
';' => {
|
||||
self.command = .{ .mouse_shape = undefined };
|
||||
self.command = .{ .mouse_shape = .{ .value = &.{} } };
|
||||
|
||||
self.state = .string;
|
||||
self.temp_state = .{ .str = &self.command.mouse_shape.value };
|
||||
@ -366,7 +366,7 @@ pub const Parser = struct {
|
||||
|
||||
.@"52" => switch (c) {
|
||||
';' => {
|
||||
self.command = .{ .clipboard_contents = undefined };
|
||||
self.command = .{ .clipboard_contents = .{ .kind = undefined, .data = &.{} } };
|
||||
self.state = .clipboard_kind;
|
||||
},
|
||||
else => self.state = .invalid,
|
||||
|
Reference in New Issue
Block a user