mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-08-05 20:55:46 +03:00
BUG 103: Disable proxy command if set to 'none'.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
@@ -655,12 +655,16 @@ int ssh_options_set(ssh_session session, enum ssh_options_e type,
|
|||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
SAFE_FREE(session->ProxyCommand);
|
SAFE_FREE(session->ProxyCommand);
|
||||||
|
/* Setting the command to 'none' disables this option. */
|
||||||
|
rc = strcasecmp(value, "none");
|
||||||
|
if (rc != 0) {
|
||||||
q = strdup(value);
|
q = strdup(value);
|
||||||
if (q == NULL) {
|
if (q == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
session->ProxyCommand = q;
|
session->ProxyCommand = q;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ssh_set_error(session, SSH_REQUEST_DENIED, "Unknown ssh option %d", type);
|
ssh_set_error(session, SSH_REQUEST_DENIED, "Unknown ssh option %d", type);
|
||||||
|
@@ -119,6 +119,23 @@ static void torture_options_set_identity(void **state) {
|
|||||||
assert_string_equal(session->identity->root->next->data, "identity1");
|
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->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_true(session->ProxyCommand == NULL);
|
||||||
|
}
|
||||||
|
|
||||||
int torture_run_tests(void) {
|
int torture_run_tests(void) {
|
||||||
int rc;
|
int rc;
|
||||||
const UnitTest tests[] = {
|
const UnitTest tests[] = {
|
||||||
@@ -127,6 +144,7 @@ int torture_run_tests(void) {
|
|||||||
unit_test_setup_teardown(torture_options_set_fd, setup, teardown),
|
unit_test_setup_teardown(torture_options_set_fd, setup, teardown),
|
||||||
unit_test_setup_teardown(torture_options_set_user, setup, teardown),
|
unit_test_setup_teardown(torture_options_set_user, setup, teardown),
|
||||||
unit_test_setup_teardown(torture_options_set_identity, setup, teardown),
|
unit_test_setup_teardown(torture_options_set_identity, setup, teardown),
|
||||||
|
unit_test_setup_teardown(torture_options_proxycommand, setup, teardown),
|
||||||
};
|
};
|
||||||
|
|
||||||
ssh_init();
|
ssh_init();
|
||||||
|
Reference in New Issue
Block a user