feat(lsp): rename_symbol: add checks to file uri decoding

This commit is contained in:
CJ van den Berg 2025-01-16 23:40:10 +01:00
parent 00efee6c02
commit f659fcf586
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -815,8 +815,15 @@ pub fn rename_symbol(self: *Self, from: tp.pid_ref, file_path: []const u8, row:
try cbor.writeValue(w, "rename_symbol_item");
try cbor.writeArrayHeader(w, renames.items.len);
for (renames.items) |rename| {
if (!std.mem.eql(u8, rename.uri[0..7], "file://")) return error.InvalidTargetURI;
var file_path_buf: [std.fs.max_path_bytes]u8 = undefined;
const file_path_ = std.Uri.percentDecodeBackwards(&file_path_buf, rename.uri[7..]);
if (builtin.os.tag == .windows) {
if (file_path[0] == '/') file_path = file_path[1..];
for (file_path, 0..) |c, i| if (c == '/') {
file_path[i] = '\\';
};
}
const line = try self.get_line_of_file(self.allocator, file_path, rename.range.start.line);
try cbor.writeValue(w, .{
file_path_,