summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/ssh-sk-client.c
diff options
context:
space:
mode:
authordjm <djm@openbsd.org>2020-01-21 07:07:31 +0000
committerdjm <djm@openbsd.org>2020-01-21 07:07:31 +0000
commitfb247a265979e1c6d3085d8c0c5e13208d939c26 (patch)
tree8ac8af8e3de2ead6a8fddf9bd9f74eefce7aa272 /usr.bin/ssh/ssh-sk-client.c
parentuse an underscore for -p's argument, rather than hyphen: matches SYNOPSIS (diff)
downloadwireguard-openbsd-fb247a265979e1c6d3085d8c0c5e13208d939c26.tar.xz
wireguard-openbsd-fb247a265979e1c6d3085d8c0c5e13208d939c26.zip
check access(ssh-sk-helper, X_OK) to provide friendly error message
for misconfigured helper paths
Diffstat (limited to 'usr.bin/ssh/ssh-sk-client.c')
-rw-r--r--usr.bin/ssh/ssh-sk-client.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/usr.bin/ssh/ssh-sk-client.c b/usr.bin/ssh/ssh-sk-client.c
index bd93937c868..6ca85aaeba1 100644
--- a/usr.bin/ssh/ssh-sk-client.c
+++ b/usr.bin/ssh/ssh-sk-client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-sk-client.c,v 1.5 2020/01/10 23:43:26 djm Exp $ */
+/* $OpenBSD: ssh-sk-client.c,v 1.6 2020/01/21 07:07:31 djm Exp $ */
/*
* Copyright (c) 2019 Google LLC
*
@@ -19,6 +19,7 @@
#include <sys/socket.h>
#include <sys/wait.h>
+#include <fcntl.h>
#include <limits.h>
#include <errno.h>
#include <signal.h>
@@ -54,6 +55,13 @@ start_helper(int *fdp, pid_t *pidp, void (**osigchldp)(int))
helper = getenv("SSH_SK_HELPER");
if (helper == NULL || strlen(helper) == 0)
helper = _PATH_SSH_SK_HELPER;
+ if (access(helper, X_OK) != 0) {
+ oerrno = errno;
+ error("%s: helper \"%s\" unusable: %s", __func__, helper,
+ strerror(errno));
+ errno = oerrno;
+ return SSH_ERR_SYSTEM_ERROR;
+ }
#ifdef DEBUG_SK
verbosity = "-vvv";
#endif