diff cli-main.c @ 1221:f7d565054e5f

use exec for proxycommand
author Matt Johnston <matt@ucc.asn.au>
date Fri, 18 Dec 2015 21:20:46 +0800
parents 3daff2072bd0
children 750ec4ec4cbe b66a483f3dcb
line wrap: on
line diff
--- a/cli-main.c	Tue Dec 15 22:57:22 2015 +0800
+++ b/cli-main.c	Fri Dec 18 21:20:46 2015 +0800
@@ -152,12 +152,19 @@
 
 #ifdef ENABLE_CLI_PROXYCMD
 static void cli_proxy_cmd(int *sock_in, int *sock_out, pid_t *pid_out) {
+	char * ex_cmd = NULL;
+	size_t ex_cmdlen;
 	int ret;
 
 	fill_passwd(cli_opts.own_user);
 
-	ret = spawn_command(exec_proxy_cmd, cli_opts.proxycmd,
+	ex_cmdlen = strlen(cli_opts.proxycmd) + 6; /* "exec " + command + '\0' */
+	ex_cmd = m_malloc(ex_cmdlen);
+	snprintf(ex_cmd, ex_cmdlen, "exec %s", cli_opts.proxycmd);
+
+	ret = spawn_command(exec_proxy_cmd, ex_cmd,
 			sock_out, sock_in, NULL, pid_out);
+	m_free(ex_cmd);
 	if (ret == DROPBEAR_FAILURE) {
 		dropbear_exit("Failed running proxy command");
 		*sock_in = *sock_out = -1;