fixed: [patch] fix to ForceCommand to support additional arguments to internal-sftp
Michael Barabanov
michael.barabanov at gmail.com
Wed Aug 20 10:43:22 EST 2008
This should work as well.
On Tue, Aug 19, 2008 at 5:32 PM, Damien Miller <djm at mindrot.org> wrote:
> On Tue, 19 Aug 2008, Michael Barabanov wrote:
>
> > The previous version broke the case of internal-sftp without arguments.
> This
> > is a fixed version.
>
> How about this:
>
> Index: session.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/session.c,v
> retrieving revision 1.241
> diff -u -p -r1.241 session.c
> --- session.c 16 Jun 2008 13:22:53 -0000 1.241
> +++ session.c 20 Aug 2008 00:32:11 -0000
> @@ -87,6 +87,12 @@
> #include <kafs.h>
> #endif
>
> +#define IS_INTERNAL_SFTP(c) \
> + (!strncmp(c, INTERNAL_SFTP_NAME, sizeof(INTERNAL_SFTP_NAME) - 1) &&
> \
> + (c[sizeof(INTERNAL_SFTP_NAME) - 1] == '\0' || \
> + c[sizeof(INTERNAL_SFTP_NAME) - 1] == ' ' || \
> + c[sizeof(INTERNAL_SFTP_NAME) - 1] == '\t'))
> +
> /* func */
>
> Session *session_new(void);
> @@ -701,7 +707,7 @@ do_exec(Session *s, const char *command)
> if (options.adm_forced_command) {
> original_command = command;
> command = options.adm_forced_command;
> - if (strcmp(INTERNAL_SFTP_NAME, command) == 0)
> + if (IS_INTERNAL_SFTP(command))
> s->is_subsystem = SUBSYSTEM_INT_SFTP;
> else if (s->is_subsystem)
> s->is_subsystem = SUBSYSTEM_EXT;
> @@ -709,7 +715,7 @@ do_exec(Session *s, const char *command)
> } else if (forced_command) {
> original_command = command;
> command = forced_command;
> - if (strcmp(INTERNAL_SFTP_NAME, command) == 0)
> + if (IS_INTERNAL_SFTP(command))
> s->is_subsystem = SUBSYSTEM_INT_SFTP;
> else if (s->is_subsystem)
> s->is_subsystem = SUBSYSTEM_EXT;
>
More information about the openssh-unix-dev
mailing list