[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] misc: Allow %% to escape a single % in paths.
[Thread Prev] | [Thread Next]
[Date Prev] | [Date Next]
- Subject: Re: [PATCH v2] misc: Allow %% to escape a single % in paths.
- From: Jakub Jelen <jjelen@xxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Tue, 30 Jul 2019 16:46:22 +0200
- To: "Richard W.M. Jones" <rjones@xxxxxxxxxx>, libssh@xxxxxxxxxx
Thank you for the patch. Looks good to me. I will merge the change. On Tue, 2019-07-30 at 15:02 +0100, Richard W.M. Jones wrote: > For example "%d/config%%1" is expanded to "~/.ssh/config%1". > > Signed-off-by: Richard W.M. Jones <rjones@xxxxxxxxxx> > --- > src/misc.c | 3 +++ > tests/unittests/torture_misc.c | 13 +++++++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/src/misc.c b/src/misc.c > index c7174b84..25df5910 100644 > --- a/src/misc.c > +++ b/src/misc.c > @@ -1012,6 +1012,7 @@ char *ssh_path_expand_escape(ssh_session > session, const char *s) { > > for (i = 0; *p != '\0'; p++) { > if (*p != '%') { > + escape: > buf[i] = *p; > i++; > if (i >= MAX_BUF_SIZE) { > @@ -1028,6 +1029,8 @@ char *ssh_path_expand_escape(ssh_session > session, const char *s) { > } > > switch (*p) { > + case '%': > + goto escape; > case 'd': > x = strdup(session->opts.sshdir); > break; > diff --git a/tests/unittests/torture_misc.c > b/tests/unittests/torture_misc.c > index 26da536b..8acffa0c 100644 > --- a/tests/unittests/torture_misc.c > +++ b/tests/unittests/torture_misc.c > @@ -192,6 +192,18 @@ static void torture_path_expand_known_hosts(void > **state) { > free(tmp); > } > > +static void torture_path_expand_percent(void **state) { > + ssh_session session = *state; > + char *tmp; > + > + session->opts.sshdir = strdup("/home/guru/.ssh"); > + > + tmp = ssh_path_expand_escape(session, "%d/config%%1"); > + assert_non_null(tmp); > + assert_string_equal(tmp, "/home/guru/.ssh/config%1"); > + free(tmp); > +} > + > static void torture_timeout_elapsed(void **state){ > struct ssh_timestamp ts; > (void) state; > @@ -365,6 +377,7 @@ int torture_run_tests(void) { > #endif > cmocka_unit_test_setup_teardown(torture_path_expand_escape, > setup, teardown), > cmocka_unit_test_setup_teardown(torture_path_expand_known_ho > sts, setup, teardown), > + cmocka_unit_test_setup_teardown(torture_path_expand_percent, > setup, teardown), > cmocka_unit_test(torture_timeout_elapsed), > cmocka_unit_test(torture_timeout_update), > cmocka_unit_test(torture_ssh_analyze_banner), -- Jakub Jelen Senior Software Engineer Security Technologies Red Hat, Inc.
[PATCH v2] misc: Allow %% to escape a single % in paths. | "Richard W.M. Jones" <rjones@xxxxxxxxxx> |
[PATCH v2] misc: Allow %% to escape a single % in paths. | "Richard W.M. Jones" <rjones@xxxxxxxxxx> |