version 1.31, 2005/03/10 22:40:38 |
version 1.31.4.2, 2006/10/06 03:19:32 |
|
|
|
/* $OpenBSD$ */ |
/* |
/* |
* Author: Tatu Ylonen <ylo@cs.hut.fi> |
* Author: Tatu Ylonen <ylo@cs.hut.fi> |
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
|
|
* called by a name other than "ssh" or "Secure Shell". |
* called by a name other than "ssh" or "Secure Shell". |
*/ |
*/ |
|
|
#include "includes.h" |
#include <sys/types.h> |
RCSID("$OpenBSD$"); |
|
|
|
|
#include <netdb.h> |
|
#include <pwd.h> |
|
#include <string.h> |
|
#include <stdio.h> |
|
#include <stdarg.h> |
|
|
#include "xmalloc.h" |
#include "xmalloc.h" |
#include "match.h" |
#include "match.h" |
#include "log.h" |
#include "log.h" |
#include "canohost.h" |
#include "canohost.h" |
|
#include "buffer.h" |
#include "channels.h" |
#include "channels.h" |
#include "auth-options.h" |
#include "auth-options.h" |
#include "servconf.h" |
#include "servconf.h" |
#include "misc.h" |
#include "misc.h" |
#include "monitor_wrap.h" |
#include "key.h" |
|
#include "hostfile.h" |
#include "auth.h" |
#include "auth.h" |
|
#ifdef GSSAPI |
|
#include "ssh-gss.h" |
|
#endif |
|
#include "monitor_wrap.h" |
|
|
/* Flags set authorized_keys flags */ |
/* Flags set authorized_keys flags */ |
int no_port_forwarding_flag = 0; |
int no_port_forwarding_flag = 0; |
|
|
/* "environment=" options. */ |
/* "environment=" options. */ |
struct envstring *custom_environment = NULL; |
struct envstring *custom_environment = NULL; |
|
|
|
/* "tunnel=" option. */ |
|
int forced_tun_device = -1; |
|
|
extern ServerOptions options; |
extern ServerOptions options; |
|
|
void |
void |
|
|
xfree(forced_command); |
xfree(forced_command); |
forced_command = NULL; |
forced_command = NULL; |
} |
} |
|
forced_tun_device = -1; |
channel_clear_permitted_opens(); |
channel_clear_permitted_opens(); |
auth_debug_reset(); |
auth_debug_reset(); |
} |
} |
|
|
forced_command = NULL; |
forced_command = NULL; |
goto bad_option; |
goto bad_option; |
} |
} |
forced_command[i] = 0; |
forced_command[i] = '\0'; |
auth_debug_add("Forced command: %.900s", forced_command); |
auth_debug_add("Forced command: %.900s", forced_command); |
opts++; |
opts++; |
goto next_option; |
goto next_option; |
|
|
xfree(s); |
xfree(s); |
goto bad_option; |
goto bad_option; |
} |
} |
s[i] = 0; |
s[i] = '\0'; |
auth_debug_add("Adding to environment: %.900s", s); |
auth_debug_add("Adding to environment: %.900s", s); |
debug("Adding to environment: %.900s", s); |
debug("Adding to environment: %.900s", s); |
opts++; |
opts++; |
|
|
xfree(patterns); |
xfree(patterns); |
goto bad_option; |
goto bad_option; |
} |
} |
patterns[i] = 0; |
patterns[i] = '\0'; |
opts++; |
opts++; |
if (match_host_and_ip(remote_host, remote_ip, |
if (match_host_and_ip(remote_host, remote_ip, |
patterns) != 1) { |
patterns) != 1) { |
|
|
xfree(patterns); |
xfree(patterns); |
goto bad_option; |
goto bad_option; |
} |
} |
patterns[i] = 0; |
patterns[i] = '\0'; |
opts++; |
opts++; |
p = patterns; |
p = patterns; |
host = hpdelim(&p); |
host = hpdelim(&p); |
|
|
if (options.allow_tcp_forwarding) |
if (options.allow_tcp_forwarding) |
channel_add_permitted_opens(host, port); |
channel_add_permitted_opens(host, port); |
xfree(patterns); |
xfree(patterns); |
|
goto next_option; |
|
} |
|
cp = "tunnel=\""; |
|
if (strncasecmp(opts, cp, strlen(cp)) == 0) { |
|
char *tun = NULL; |
|
opts += strlen(cp); |
|
tun = xmalloc(strlen(opts) + 1); |
|
i = 0; |
|
while (*opts) { |
|
if (*opts == '"') |
|
break; |
|
tun[i++] = *opts++; |
|
} |
|
if (!*opts) { |
|
debug("%.100s, line %lu: missing end quote", |
|
file, linenum); |
|
auth_debug_add("%.100s, line %lu: missing end quote", |
|
file, linenum); |
|
xfree(tun); |
|
forced_tun_device = -1; |
|
goto bad_option; |
|
} |
|
tun[i] = '\0'; |
|
forced_tun_device = a2tun(tun, NULL); |
|
xfree(tun); |
|
if (forced_tun_device == SSH_TUNID_ERR) { |
|
debug("%.100s, line %lu: invalid tun device", |
|
file, linenum); |
|
auth_debug_add("%.100s, line %lu: invalid tun device", |
|
file, linenum); |
|
forced_tun_device = -1; |
|
goto bad_option; |
|
} |
|
auth_debug_add("Forced tun device: %d", forced_tun_device); |
|
opts++; |
goto next_option; |
goto next_option; |
} |
} |
next_option: |
next_option: |