]> andersk Git - openssh.git/blobdiff - session.c
- markus@cvs.openbsd.org 2002/02/07 09:35:39
[openssh.git] / session.c
index 268d1384e0a95187230cbaee246a0be3e6cdcc4d..431936ac65aacafff86ee7f913816525ac0733f4 100644 (file)
--- a/session.c
+++ b/session.c
@@ -33,7 +33,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: session.c,v 1.118 2002/01/26 16:44:22 stevesk 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
@@ -717,7 +717,7 @@ do_login(Session *s, const char *command)
 
        /* Record that there was a login on that tty from the remote host. */
        record_login(pid, s->tty, pw->pw_name, pw->pw_uid,
-           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);
 
 #ifdef USE_PAM
@@ -1287,7 +1287,7 @@ do_child(Session *s, const char *command)
        /* we have to stash the hostname before we close our socket. */
        if (options.use_login)
                hostname = get_remote_name_or_ip(utmp_len,
-                   options.reverse_mapping_check);
+                   options.verify_reverse_mapping);
        /*
         * Close the connection descriptors; note that this is the child, and
         * the server will still have the socket open, and it is important
@@ -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));
@@ -2021,7 +2001,7 @@ session_setup_x11fwd(Session *s)
                return 0;
        }
        s->display_number = x11_create_display_inet(options.x11_display_offset,
-           options.gateway_ports, s->single_connection);
+           options.x11_use_localhost, s->single_connection);
        if (s->display_number == -1) {
                debug("x11_create_display_inet failed.");
                return 0;
@@ -2035,7 +2015,7 @@ session_setup_x11fwd(Session *s)
         * authorization entry is added with xauth(1).  This will be
         * different than the DISPLAY string for localhost displays.
         */
-       if (!options.gateway_ports) {
+       if (options.x11_use_localhost) {
                snprintf(display, sizeof display, "localhost:%d.%d",
                    s->display_number, s->screen);
                snprintf(auth_display, sizeof auth_display, "unix:%d.%d",
This page took 0.115254 seconds and 4 git commands to generate.