cli: make +ssh-cache contains() a read-only op (#9369)

contains() checks the cache for an existing entry. It's a read-only
operation, so we can drop the write bit and fixupPermissions() call.
This is also consistent with the list() operation.

fixupPermissions() is unnecessary in this code path. It provided minimal
additional security because all of our creation and update operations
enforce 0o600 (owner-only) permissions, so anyone tampering with this
file has already gotten around that. The contents of this (ssh host
cache) file are also not sensitive enough to warrant any additional
hardening on reads.
pull/9296/head
Jon Parise 2025-10-27 12:06:55 -04:00 committed by GitHub
parent db75502fec
commit 86ec29237c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 1 additions and 2 deletions

View File

@ -181,13 +181,12 @@ pub fn contains(
// Open our file
const file = std.fs.openFileAbsolute(
self.path,
.{ .mode = .read_write },
.{},
) catch |err| switch (err) {
error.FileNotFound => return false,
else => return err,
};
defer file.close();
try fixupPermissions(file);
// Read existing entries
var entries = try readEntries(alloc, file);