summaryrefslogtreecommitdiff
path: root/auth-options.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2000-10-14 16:23:11 +1100
committerDamien Miller <djm@mindrot.org>2000-10-14 16:23:11 +1100
commit874d77bb134a21a5cf625956b60173376a993ba8 (patch)
tree93dd73b2ff1fbf0ad5f3978a2c4e0d8438a0bf7c /auth-options.c
parent89d9796fbedef4eed6956a2c095c7cc25330c28d (diff)
- (djm) Big OpenBSD sync:
- markus@cvs.openbsd.org 2000/09/30 10:27:44 [log.c] allow loglevel debug - markus@cvs.openbsd.org 2000/10/03 11:59:57 [packet.c] hmac->mac - markus@cvs.openbsd.org 2000/10/03 12:03:03 [auth-krb4.c auth-passwd.c auth-rh-rsa.c auth-rhosts.c auth-rsa.c auth1.c] move fake-auth from auth1.c to individual auth methods, disables s/key in debug-msg - markus@cvs.openbsd.org 2000/10/03 12:16:48 ssh.c do not resolve canonname, i have no idea why this was added oin ossh - markus@cvs.openbsd.org 2000/10/09 15:30:44 ssh-keygen.1 ssh-keygen.c -X now reads private ssh.com DSA keys, too. - markus@cvs.openbsd.org 2000/10/09 15:32:34 auth-options.c clear options on every call. - markus@cvs.openbsd.org 2000/10/09 15:51:00 authfd.c authfd.h interop with ssh-agent2, from <res@shore.net> - markus@cvs.openbsd.org 2000/10/10 14:20:45 compat.c use rexexp for version string matching - provos@cvs.openbsd.org 2000/10/10 22:02:18 [kex.c kex.h myproposal.h ssh.h ssh2.h sshconnect2.c sshd.c dh.c dh.h] First rough implementation of the diffie-hellman group exchange. The client can ask the server for bigger groups to perform the diffie-hellman in, thus increasing the attack complexity when using ciphers with longer keys. University of Windsor provided network, T the company. - markus@cvs.openbsd.org 2000/10/11 13:59:52 [auth-rsa.c auth2.c] clear auth options unless auth sucessfull - markus@cvs.openbsd.org 2000/10/11 14:00:27 [auth-options.h] clear auth options unless auth sucessfull - markus@cvs.openbsd.org 2000/10/11 14:03:27 [scp.1 scp.c] support 'scp -o' with help from mouring@pconline.com - markus@cvs.openbsd.org 2000/10/11 14:11:35 [dh.c] Wall - markus@cvs.openbsd.org 2000/10/11 14:14:40 [auth.h auth2.c readconf.c readconf.h readpass.c servconf.c servconf.h] [ssh.h sshconnect2.c sshd_config auth2-skey.c cli.c cli.h] add support for s/key (kbd-interactive) to ssh2, based on work by mkiernan@avantgo.com and me - markus@cvs.openbsd.org 2000/10/11 14:27:24 [auth.c auth1.c auth2.c authfile.c cipher.c cipher.h kex.c kex.h] [myproposal.h packet.c readconf.c session.c ssh.c ssh.h sshconnect1.c] [sshconnect2.c sshd.c] new cipher framework - markus@cvs.openbsd.org 2000/10/11 14:45:21 [cipher.c] remove DES - markus@cvs.openbsd.org 2000/10/12 03:59:20 [cipher.c cipher.h sshconnect1.c sshconnect2.c sshd.c] enable DES in SSH-1 clients only - markus@cvs.openbsd.org 2000/10/12 08:21:13 [kex.h packet.c] remove unused - markus@cvs.openbsd.org 2000/10/13 12:34:46 [sshd.c] Kludge for F-Secure Macintosh < 1.0.2; appro@fy.chalmers.se - markus@cvs.openbsd.org 2000/10/13 12:59:15 [cipher.c cipher.h myproposal.h rijndael.c rijndael.h] rijndael/aes support - markus@cvs.openbsd.org 2000/10/13 13:10:54 [sshd.8] more info about -V - markus@cvs.openbsd.org 2000/10/13 13:12:02 [myproposal.h] prefer no compression
Diffstat (limited to 'auth-options.c')
-rw-r--r--auth-options.c48
1 files changed, 28 insertions, 20 deletions
diff --git a/auth-options.c b/auth-options.c
index da6965266..c9c149d69 100644
--- a/auth-options.c
+++ b/auth-options.c
@@ -14,7 +14,7 @@
14 */ 14 */
15 15
16#include "includes.h" 16#include "includes.h"
17RCSID("$OpenBSD: auth-options.c,v 1.4 2000/09/07 21:13:36 markus Exp $"); 17RCSID("$OpenBSD: auth-options.c,v 1.5 2000/10/09 21:32:34 markus Exp $");
18 18
19#include "ssh.h" 19#include "ssh.h"
20#include "packet.h" 20#include "packet.h"
@@ -33,6 +33,25 @@ char *forced_command = NULL;
33/* "environment=" options. */ 33/* "environment=" options. */
34struct envstring *custom_environment = NULL; 34struct envstring *custom_environment = NULL;
35 35
36void
37auth_clear_options(void)
38{
39 no_agent_forwarding_flag = 0;
40 no_port_forwarding_flag = 0;
41 no_pty_flag = 0;
42 no_x11_forwarding_flag = 0;
43 while (custom_environment) {
44 struct envstring *ce = custom_environment;
45 custom_environment = ce->next;
46 xfree(ce->s);
47 xfree(ce);
48 }
49 if (forced_command) {
50 xfree(forced_command);
51 forced_command = NULL;
52 }
53}
54
36/* return 1 if access is granted, 0 if not. side effect: sets key option flags */ 55/* return 1 if access is granted, 0 if not. side effect: sets key option flags */
37int 56int
38auth_parse_options(struct passwd *pw, char *options, unsigned long linenum) 57auth_parse_options(struct passwd *pw, char *options, unsigned long linenum)
@@ -40,6 +59,10 @@ auth_parse_options(struct passwd *pw, char *options, unsigned long linenum)
40 const char *cp; 59 const char *cp;
41 if (!options) 60 if (!options)
42 return 1; 61 return 1;
62
63 /* reset options */
64 auth_clear_options();
65
43 while (*options && *options != ' ' && *options != '\t') { 66 while (*options && *options != ' ' && *options != '\t') {
44 cp = "no-port-forwarding"; 67 cp = "no-port-forwarding";
45 if (strncmp(options, cp, strlen(cp)) == 0) { 68 if (strncmp(options, cp, strlen(cp)) == 0) {
@@ -87,9 +110,9 @@ auth_parse_options(struct passwd *pw, char *options, unsigned long linenum)
87 } 110 }
88 if (!*options) { 111 if (!*options) {
89 debug("%.100s, line %lu: missing end quote", 112 debug("%.100s, line %lu: missing end quote",
90 SSH_USER_PERMITTED_KEYS, linenum); 113 SSH_USER_PERMITTED_KEYS, linenum);
91 packet_send_debug("%.100s, line %lu: missing end quote", 114 packet_send_debug("%.100s, line %lu: missing end quote",
92 SSH_USER_PERMITTED_KEYS, linenum); 115 SSH_USER_PERMITTED_KEYS, linenum);
93 continue; 116 continue;
94 } 117 }
95 forced_command[i] = 0; 118 forced_command[i] = 0;
@@ -117,9 +140,9 @@ auth_parse_options(struct passwd *pw, char *options, unsigned long linenum)
117 } 140 }
118 if (!*options) { 141 if (!*options) {
119 debug("%.100s, line %lu: missing end quote", 142 debug("%.100s, line %lu: missing end quote",
120 SSH_USER_PERMITTED_KEYS, linenum); 143 SSH_USER_PERMITTED_KEYS, linenum);
121 packet_send_debug("%.100s, line %lu: missing end quote", 144 packet_send_debug("%.100s, line %lu: missing end quote",
122 SSH_USER_PERMITTED_KEYS, linenum); 145 SSH_USER_PERMITTED_KEYS, linenum);
123 continue; 146 continue;
124 } 147 }
125 s[i] = 0; 148 s[i] = 0;
@@ -175,21 +198,6 @@ auth_parse_options(struct passwd *pw, char *options, unsigned long linenum)
175 get_remote_ipaddr()); 198 get_remote_ipaddr());
176 packet_send_debug("Your host '%.200s' is not permitted to use this key for login.", 199 packet_send_debug("Your host '%.200s' is not permitted to use this key for login.",
177 get_canonical_hostname()); 200 get_canonical_hostname());
178 /* key invalid for this host, reset flags */
179 no_agent_forwarding_flag = 0;
180 no_port_forwarding_flag = 0;
181 no_pty_flag = 0;
182 no_x11_forwarding_flag = 0;
183 while (custom_environment) {
184 struct envstring *ce = custom_environment;
185 custom_environment = ce->next;
186 xfree(ce->s);
187 xfree(ce);
188 }
189 if (forced_command) {
190 xfree(forced_command);
191 forced_command = NULL;
192 }
193 /* deny access */ 201 /* deny access */
194 return 0; 202 return 0;
195 } 203 }