From 279921b936f572c8562350f8b809123c081d845c Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 9 Jun 2024 21:22:37 -0400 Subject: [PATCH] terminal: reject invalid DECSASD status code --- src/terminal/ansi.zig | 3 --- src/terminal/stream.zig | 7 ++++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/terminal/ansi.zig b/src/terminal/ansi.zig index 43c2a9a1c..590e9885a 100644 --- a/src/terminal/ansi.zig +++ b/src/terminal/ansi.zig @@ -91,9 +91,6 @@ pub const StatusLineType = enum(u16) { pub const StatusDisplay = enum(u16) { main = 0, status_line = 1, - - // Non-exhaustive so that @intToEnum never fails for unsupported values. - _, }; /// The possible modify key formats to ESC[>{a};{b}m diff --git a/src/terminal/stream.zig b/src/terminal/stream.zig index fa39b69ae..01e027ec2 100644 --- a/src/terminal/stream.zig +++ b/src/terminal/stream.zig @@ -1212,7 +1212,12 @@ pub fn Stream(comptime Handler: type) type { if (!@hasDecl(T, "setActiveStatusDisplay")) break :decsasd false; - try self.handler.setActiveStatusDisplay(@enumFromInt(input.params[0])); + const display = std.meta.intToEnum( + ansi.StatusDisplay, + input.params[0], + ) catch break :decsasd false; + + try self.handler.setActiveStatusDisplay(display); break :decsasd true; };