Skip to content

Commit

Permalink
config: add title_report (default false) to configure CSI 21 t (#3908)
Browse files Browse the repository at this point in the history
  • Loading branch information
mitchellh authored Dec 29, 2024
2 parents 02538be + 5be77de commit 25a4a89
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/Surface.zig
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ const DerivedConfig = struct {
window_padding_right: u32,
window_padding_balance: bool,
title: ?[:0]const u8,
title_report: bool,
links: []Link,

const Link = struct {
Expand Down Expand Up @@ -313,6 +314,7 @@ const DerivedConfig = struct {
.window_padding_right = config.@"window-padding-x".bottom_right,
.window_padding_balance = config.@"window-padding-balance",
.title = config.title,
.title_report = config.@"title-report",
.links = links,

// Assignments happen sequentially so we have to do this last
Expand Down Expand Up @@ -824,7 +826,12 @@ pub fn handleMessage(self: *Surface, msg: Message) !void {
);
},

.report_title => |style| {
.report_title => |style| report_title: {
if (!self.config.title_report) {
log.info("report_title requested, but disabled via config", .{});
break :report_title;
}

const title: ?[:0]const u8 = self.rt_surface.getTitle();
const data = switch (style) {
.csi_21_t => try std.fmt.allocPrint(
Expand Down
9 changes: 9 additions & 0 deletions src/config/Config.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1254,6 +1254,15 @@ keybind: Keybinds = .{},
/// program, not the terminal emulator).
@"clipboard-paste-bracketed-safe": bool = true,

/// Enables or disabled title reporting (CSI 21 t). This escape sequence
/// allows the running program to query the terminal title. This is a common
/// security issue and is disabled by default.
///
/// Warning: This can expose sensitive information at best and enable
/// arbitrary code execution at worst (with a maliciously crafted title
/// and a minor amount of user interaction).
@"title-report": bool = false,

/// The total amount of bytes that can be used for image data (i.e. the Kitty
/// image protocol) per terminal screen. The maximum value is 4,294,967,295
/// (4GiB). The default is 320MB. If this is set to zero, then all image
Expand Down

0 comments on commit 25a4a89

Please sign in to comment.