]> andersk Git - openssh.git/blobdiff - session.c
- markus@cvs.openbsd.org 2002/02/07 09:35:39
[openssh.git] / session.c
index 48821af2e31e4c915927c8cf6faf46c2b4ffcb61..431936ac65aacafff86ee7f913816525ac0733f4 100644 (file)
--- a/session.c
+++ b/session.c
@@ -33,7 +33,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: session.c,v 1.120 2002/01/29 14:32:03 markus Exp $");
+RCSID("$OpenBSD: session.c,v 1.124 2002/02/06 14:37:22 markus Exp $");
 
 #include "ssh.h"
 #include "ssh1.h"
@@ -195,7 +195,7 @@ do_authenticated(Authctxt *authctxt)
 #ifdef WITH_AIXAUTHENTICATE
        /* We don't have a pty yet, so just label the line as "ssh" */
        if (loginsuccess(authctxt->user,
-           get_canonical_hostname(options.reverse_mapping_check),
+           get_canonical_hostname(options.verify_reverse_mapping),
            "ssh", &aixloginmsg) < 0)
                aixloginmsg = NULL;
 #endif /* WITH_AIXAUTHENTICATE */
@@ -656,7 +656,7 @@ do_pre_login(Session *s)
        }
 
        record_utmp_only(pid, s->tty, s->pw->pw_name,
-           get_remote_name_or_ip(utmp_len, options.reverse_mapping_check),
+           get_remote_name_or_ip(utmp_len, options.verify_reverse_mapping),
            (struct sockaddr *)&from);
 }
 #endif
@@ -1646,7 +1646,7 @@ session_subsystem_req(Session *s)
        int i;
 
        packet_check_eom();
-       log("subsystem request for %s", subsys);
+       log("subsystem request for %.100s", subsys);
 
        for (i = 0; i < options.num_subsystems; i++) {
                if (strcmp(subsys, options.subsystem_name[i]) == 0) {
@@ -1660,11 +1660,12 @@ session_subsystem_req(Session *s)
                        s->is_subsystem = 1;
                        do_exec(s, cmd);
                        success = 1;
+                       break;
                }
        }
 
        if (!success)
-               log("subsystem request for %s failed, subsystem not found",
+               log("subsystem request for %.100s failed, subsystem not found",
                    subsys);
 
        xfree(subsys);
@@ -1728,28 +1729,18 @@ session_auth_agent_req(Session *s)
        }
 }
 
-void
-session_input_channel_req(int id, void *arg)
+int
+session_input_channel_req(Channel *c, const char *rtype)
 {
-       u_int len;
-       int reply;
        int success = 0;
-       char *rtype;
        Session *s;
-       Channel *c;
-
-       rtype = packet_get_string(&len);
-       reply = packet_get_char();
-
-       s = session_by_channel(id);
-       if (s == NULL)
-               fatal("session_input_channel_req: channel %d: no session", id);
-       c = channel_lookup(id);
-       if (c == NULL)
-               fatal("session_input_channel_req: channel %d: bad channel", id);
 
-       debug("session_input_channel_req: session %d channel %d request %s reply %d",
-           s->self, id, rtype, reply);
+       if ((s = session_by_channel(c->self)) == NULL) {
+               log("session_input_channel_req: no session %d req %.100s",
+                   c->self, rtype);
+               return 0;
+       }
+       debug("session_input_channel_req: session %d req %s", s->self, rtype);
 
        /*
         * a session is in LARVAL state until a shell, a command
@@ -1773,14 +1764,7 @@ session_input_channel_req(int id, void *arg)
        if (strcmp(rtype, "window-change") == 0) {
                success = session_window_change_req(s);
        }
-
-       if (reply) {
-               packet_start(success ?
-                   SSH2_MSG_CHANNEL_SUCCESS : SSH2_MSG_CHANNEL_FAILURE);
-               packet_put_int(c->remote_id);
-               packet_send();
-       }
-       xfree(rtype);
+       return success;
 }
 
 void
@@ -1841,23 +1825,19 @@ static void
 session_exit_message(Session *s, int status)
 {
        Channel *c;
-       if (s == NULL)
-               fatal("session_close: no session");
-       c = channel_lookup(s->chanid);
-       if (c == NULL)
+
+       if ((c = channel_lookup(s->chanid)) == NULL)
                fatal("session_exit_message: session %d: no channel %d",
                    s->self, s->chanid);
        debug("session_exit_message: session %d channel %d pid %d",
            s->self, s->chanid, s->pid);
 
        if (WIFEXITED(status)) {
-               channel_request_start(s->chanid,
-                   "exit-status", 0);
+               channel_request_start(s->chanid, "exit-status", 0);
                packet_put_int(WEXITSTATUS(status));
                packet_send();
        } else if (WIFSIGNALED(status)) {
-               channel_request_start(s->chanid,
-                   "exit-signal", 0);
+               channel_request_start(s->chanid, "exit-signal", 0);
                packet_put_int(WTERMSIG(status));
 #ifdef WCOREDUMP
                packet_put_char(WCOREDUMP(status));
This page took 0.187748 seconds and 4 git commands to generate.