|
|
@@ -8,53 +8,46 @@ the server side).
|
|
|
|
|
|
Index: session.c
|
|
|
--- session.c.orig 2004-04-16 14:47:55.000000000 +0200
|
|
|
-+++ session.c 2004-05-05 10:10:08.000000000 +0200
|
|
|
-@@ -73,9 +73,9 @@
|
|
|
- void session_pty_cleanup(Session *);
|
|
|
- void session_proctitle(Session *);
|
|
|
- int session_setup_x11fwd(Session *);
|
|
|
--void do_exec_pty(Session *, const char *);
|
|
|
-+void do_exec_pty(Session *, char *);
|
|
|
- void do_exec_no_pty(Session *, const char *);
|
|
|
--void do_exec(Session *, const char *);
|
|
|
-+void do_exec(Session *, char *);
|
|
|
- void do_login(Session *, const char *);
|
|
|
- #ifdef LOGIN_NEEDS_UTMPX
|
|
|
- static void do_pre_login(Session *s);
|
|
|
-@@ -519,7 +519,7 @@
|
|
|
- * lastlog, and other such operations.
|
|
|
- */
|
|
|
- void
|
|
|
--do_exec_pty(Session *s, const char *command)
|
|
|
-+do_exec_pty(Session *s, char *command)
|
|
|
- {
|
|
|
- int fdout, ptyfd, ttyfd, ptymaster;
|
|
|
- pid_t pid;
|
|
|
-@@ -650,8 +650,26 @@
|
|
|
- * to be forced, execute that instead.
|
|
|
- */
|
|
|
- void
|
|
|
--do_exec(Session *s, const char *command)
|
|
|
-+do_exec(Session *s, char *command)
|
|
|
- {
|
|
|
++++ session.c 2004-05-19 17:02:30.000000000 +0200
|
|
|
+@@ -66,6 +66,10 @@
|
|
|
+ #include "ssh-gss.h"
|
|
|
+ #endif
|
|
|
+
|
|
|
+#ifndef SCPBINDIR
|
|
|
+#define SCPBINDIR "@l_prefix@/bin"
|
|
|
+#endif
|
|
|
++
|
|
|
+ /* func */
|
|
|
+
|
|
|
+ Session *session_new(void);
|
|
|
+@@ -652,6 +656,21 @@
|
|
|
+ void
|
|
|
+ do_exec(Session *s, const char *command)
|
|
|
+ {
|
|
|
++ char *scp_command = NULL;
|
|
|
++
|
|
|
+ if ( command != NULL
|
|
|
+ && strlen(command) >= 3
|
|
|
+ && strncmp(command, "scp", 3) == 0
|
|
|
+ && (command[3] == ' ' || command[3] == '\0')) {
|
|
|
+ size_t l, k;
|
|
|
-+ char *cp;
|
|
|
+ l = strlen(SCPBINDIR);
|
|
|
+ k = strlen(command);
|
|
|
-+ cp = xmalloc(l+1+k+1);
|
|
|
-+ snprintf(cp, l+1+k+1, "%s/%s", SCPBINDIR, command);
|
|
|
-+ xfree(command);
|
|
|
-+ command = cp;
|
|
|
++ scp_command = xmalloc(l+1+k+1);
|
|
|
++ snprintf(scp_command, l+1+k+1, "%s/%s", SCPBINDIR, command);
|
|
|
++ command = (const char *)scp_command;
|
|
|
+ debug("Forced SCP command '%.900s'", command);
|
|
|
+ }
|
|
|
+
|
|
|
if (forced_command) {
|
|
|
original_command = command;
|
|
|
command = forced_command;
|
|
|
+@@ -672,6 +691,8 @@
|
|
|
+ do_exec_no_pty(s, command);
|
|
|
+
|
|
|
+ original_command = NULL;
|
|
|
++ if (scp_command != NULL)
|
|
|
++ xfree(scp_command);
|
|
|
+ }
|
|
|
+
|
|
|
+
|