summaryrefslogtreecommitdiffstats
path: root/auth2.c
diff options
context:
space:
mode:
authorBen Lindstrom <mouring@eviladmin.org>2001-01-09 00:35:42 +0000
committerBen Lindstrom <mouring@eviladmin.org>2001-01-09 00:35:42 +0000
commit48bd7c118a25b950842864c7eb87ef666cbc342d (patch)
treeb678668f292f8a8bb5e00b9b8f89d86370a8e11f /auth2.c
parent99a0563fd59e1d3e1b79a1a9dd38ce9f6b5059ee (diff)
- (bal) OpenBSD Sync
- markus@cvs.openbsd.org 2001/01/08 22:29:05 [auth2.c compat.c compat.h servconf.c servconf.h sshd.8 sshd_config version.h] implement option 'Banner /etc/issue.net' for ssh2, move version to 2.3.1 (needed for bugcompat detection, 2.3.0 would fail if Banner is enabled). - markus@cvs.openbsd.org 2001/01/08 22:03:23 [channels.c ssh-keyscan.c] O_NDELAY -> O_NONBLOCK; thanks stevesk@pobox.com - markus@cvs.openbsd.org 2001/01/08 21:55:41 [sshconnect1.c] more cleanups and fixes from stevesk@pobox.com: 1) try_agent_authentication() for loop will overwrite key just allocated with key_new(); don't alloc 2) call ssh_close_authentication_connection() before exit try_agent_authentication() 3) free mem on bad passphrase in try_rsa_authentication() - markus@cvs.openbsd.org 2001/01/08 21:48:17 [kex.c] missing free; thanks stevesk@pobox.com
Diffstat (limited to 'auth2.c')
-rw-r--r--auth2.c37
1 files changed, 36 insertions, 1 deletions
diff --git a/auth2.c b/auth2.c
index 4880b736..3a247f58 100644
--- a/auth2.c
+++ b/auth2.c
@@ -23,7 +23,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: auth2.c,v 1.24 2000/12/28 14:25:51 markus Exp $");
+RCSID("$OpenBSD: auth2.c,v 1.25 2001/01/08 22:29:05 markus Exp $");
#ifdef HAVE_OSF_SIA
# include <sia.h>
@@ -92,6 +92,7 @@ int user_key_allowed(struct passwd *pw, Key *key);
char *authmethods_get(void);
/* auth */
+void userauth_banner(void);
int userauth_none(Authctxt *authctxt);
int userauth_passwd(Authctxt *authctxt);
int userauth_pubkey(Authctxt *authctxt);
@@ -257,6 +258,39 @@ input_userauth_request(int type, int plen, void *ctxt)
xfree(method);
}
+void
+userauth_banner(void)
+{
+ struct stat st;
+ char *banner = NULL;
+ off_t len, n;
+ int fd;
+
+ if (options.banner == NULL || (datafellows & SSH_BUG_BANNER))
+ return;
+ if ((fd = open(options.banner, O_RDONLY)) < 0) {
+ error("userauth_banner: open %s failed: %s",
+ options.banner, strerror(errno));
+ return;
+ }
+ if (fstat(fd, &st) < 0)
+ goto done;
+ len = st.st_size;
+ banner = xmalloc(len + 1);
+ if ((n = read(fd, banner, len)) < 0)
+ goto done;
+ banner[n] = '\0';
+ packet_start(SSH2_MSG_USERAUTH_BANNER);
+ packet_put_cstring(banner);
+ packet_put_cstring(""); /* language, unused */
+ packet_send();
+ debug("userauth_banner: sent");
+done:
+ if (banner)
+ xfree(banner);
+ close(fd);
+ return;
+}
void
userauth_log(Authctxt *authctxt, int authenticated, char *method)
@@ -335,6 +369,7 @@ userauth_none(Authctxt *authctxt)
if (m != NULL)
m->enabled = NULL;
packet_done();
+ userauth_banner();
if (authctxt->valid == 0)
return(0);