Download raw body.
use correct pipe ends on linux
-----------------------------------------------
commit 24b0007a1fd9c963f5e1e243919476e449b5c8dc (linux_pipe)
from: Josh Rickmar <jrick@zettaport.com>
date: Tue Jul 5 19:07:51 2022 UTC
use correct pipe ends on linux
Fixes fdopen errors opening the pipe fds to read ssh-keygen stdout.
Reported by abieber@
diff d68f2c0e20f502d7bea2f0136527683f830b3d6c 24b0007a1fd9c963f5e1e243919476e449b5c8dc
commit - d68f2c0e20f502d7bea2f0136527683f830b3d6c
commit + 24b0007a1fd9c963f5e1e243919476e449b5c8dc
blob - ac1b2637f90cec3243da8a059be58205a4621203
blob + 97e100a388743e949c96ea3ba91a3c80e1d11957
--- lib/sigs.c
+++ lib/sigs.c
@@ -116,11 +116,11 @@ got_sigs_sign_tag_ssh(pid_t *newpid, int *in_fd, int *
} else if (pid == 0) {
if (close(in_pfd[1]) == -1)
err(1, "close");
- if (close(out_pfd[1]) == -1)
+ if (close(out_pfd[0]) == -1)
err(1, "close");
if (dup2(in_pfd[0], 0) == -1)
err(1, "dup2");
- if (dup2(out_pfd[0], 1) == -1)
+ if (dup2(out_pfd[1], 1) == -1)
err(1, "dup2");
if (execv(GOT_TAG_PATH_SSH_KEYGEN, (char **const)argv) == -1)
err(1, "execv");
@@ -128,11 +128,11 @@ got_sigs_sign_tag_ssh(pid_t *newpid, int *in_fd, int *
}
if (close(in_pfd[0]) == -1)
return got_error_from_errno("close");
- if (close(out_pfd[0]) == -1)
+ if (close(out_pfd[1]) == -1)
return got_error_from_errno("close");
*newpid = pid;
*in_fd = in_pfd[1];
- *out_fd = out_pfd[1];
+ *out_fd = out_pfd[0];
return NULL;
}
@@ -342,11 +342,11 @@ got_sigs_verify_tag_ssh(char **msg, struct got_tag_obj
} else if (pid == 0) {
if (close(in_pfd[1]) == -1)
err(1, "close");
- if (close(out_pfd[1]) == -1)
+ if (close(out_pfd[0]) == -1)
err(1, "close");
if (dup2(in_pfd[0], 0) == -1)
err(1, "dup2");
- if (dup2(out_pfd[0], 1) == -1)
+ if (dup2(out_pfd[1], 1) == -1)
err(1, "dup2");
if (execv(GOT_TAG_PATH_SSH_KEYGEN, (char **const)argv) == -1)
err(1, "execv");
@@ -356,7 +356,7 @@ got_sigs_verify_tag_ssh(char **msg, struct got_tag_obj
error = got_error_from_errno("close");
goto done;
}
- if (close(out_pfd[0]) == -1) {
+ if (close(out_pfd[1]) == -1) {
error = got_error_from_errno("close");
goto done;
}
@@ -377,7 +377,7 @@ got_sigs_verify_tag_ssh(char **msg, struct got_tag_obj
goto done;
}
- out = fdopen(out_pfd[1], "r");
+ out = fdopen(out_pfd[0], "r");
if (out == NULL) {
error = got_error_from_errno("fdopen");
goto done;
@@ -388,7 +388,7 @@ got_sigs_verify_tag_ssh(char **msg, struct got_tag_obj
error = buf_putc(buf, '\0');
if (error)
goto done;
- if (close(out_pfd[1]) == -1) {
+ if (close(out_pfd[0]) == -1) {
error = got_error_from_errno("close");
goto done;
}
use correct pipe ends on linux