Fix mcookie usage (fixes #669)

Signed-off-by: AnErrupTion <anerruption@disroot.org>
This commit is contained in:
AnErrupTion 2024-08-01 13:20:23 +02:00
parent 40d180da63
commit 3ca2e8524b
No known key found for this signature in database
GPG Key ID: 3E85EB44F610AD7F
1 changed files with 4 additions and 4 deletions

View File

@ -334,7 +334,7 @@ fn createXauthFile(pwd: [:0]const u8) ![:0]const u8 {
return xauthority;
}
pub fn mcookie(cmd: [:0]const u8) ![32]u8 {
pub fn mcookie(shell: [*:0]const u8, cmd: [:0]const u8) ![32]u8 {
const pipe = try std.posix.pipe();
defer std.posix.close(pipe[1]);
@ -348,8 +348,8 @@ pub fn mcookie(cmd: [:0]const u8) ![32]u8 {
std.posix.dup2(pipe[1], std.posix.STDOUT_FILENO) catch std.process.exit(1);
std.posix.close(pipe[1]);
const args = [_:null]?[*:0]u8{};
std.posix.execveZ(cmd.ptr, &args, std.c.environ) catch {};
const args = [_:null]?[*:0]const u8{ shell, "-c", cmd };
std.posix.execveZ(shell, &args, std.c.environ) catch {};
std.process.exit(1);
}
@ -371,7 +371,7 @@ fn xauth(display_name: [:0]u8, shell: [*:0]const u8, pw_dir: [*:0]const u8, xaut
_ = interop.setenv("XAUTHORITY", xauthority, 1);
_ = interop.setenv("DISPLAY", display_name, 1);
const mcookie_output = try mcookie(mcookie_cmd);
const mcookie_output = try mcookie(shell, mcookie_cmd);
const pid = try std.posix.fork();
if (pid == 0) {