forked from pool/libssh
51 lines
1.5 KiB
Diff
51 lines
1.5 KiB
Diff
|
|
diff -rupN a/src/options.c b/src/options.c
|
||
|
|
--- a/options.c 2013-01-22 11:38:30.000000000 +0100
|
||
|
|
+++ b/src/options.c 2013-07-15 09:45:28.000000000 +0200
|
||
|
|
@@ -655,11 +655,15 @@ int ssh_options_set(ssh_session session,
|
||
|
|
return -1;
|
||
|
|
} else {
|
||
|
|
SAFE_FREE(session->ProxyCommand);
|
||
|
|
- q = strdup(value);
|
||
|
|
- if (q == NULL) {
|
||
|
|
- return -1;
|
||
|
|
+ /* Setting the command to 'none' disables this option. */
|
||
|
|
+ rc = strcasecmp(value, "none");
|
||
|
|
+ if (rc != 0) {
|
||
|
|
+ q = strdup(value);
|
||
|
|
+ if (q == NULL) {
|
||
|
|
+ return -1;
|
||
|
|
+ }
|
||
|
|
+ session->ProxyCommand = q;
|
||
|
|
}
|
||
|
|
- session->ProxyCommand = q;
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
--- a/tests/unittests/torture_options.c.orig 2013-07-25 22:06:19.016024956 +0200
|
||
|
|
+++ b/tests/unittests/torture_options.c 2013-07-25 22:11:28.941507282 +0200
|
||
|
|
@@ -119,6 +119,24 @@
|
||
|
|
assert_string_equal(session->identity->root->next->data, "identity1");
|
||
|
|
}
|
||
|
|
|
||
|
|
+static void torture_options_proxycommand(void **state) {
|
||
|
|
+ ssh_session session = *state;
|
||
|
|
+ int rc;
|
||
|
|
+
|
||
|
|
+ /* Enable ProxyCommand */
|
||
|
|
+ rc = ssh_options_set(session, SSH_OPTIONS_PROXYCOMMAND, "ssh -q -A -X -W %h:%p JUMPHOST");
|
||
|
|
+ assert_int_equal(rc, 0);
|
||
|
|
+
|
||
|
|
+ assert_string_equal(session->opts.ProxyCommand, "ssh -q -A -X -W %h:%p JUMPHOST");
|
||
|
|
+
|
||
|
|
+ /* Disable ProxyCommand */
|
||
|
|
+ rc = ssh_options_set(session, SSH_OPTIONS_PROXYCOMMAND, "none");
|
||
|
|
+ assert_int_equal(rc, 0);
|
||
|
|
+
|
||
|
|
+ assert_null(session->opts.ProxyCommand);
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+
|
||
|
|
int torture_run_tests(void) {
|
||
|
|
int rc;
|
||
|
|
const UnitTest tests[] = {
|