~ubuntu-branches/ubuntu/lucid/openssh/lucid

« back to all changes in this revision

Viewing changes to auth2-none.c

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2008-09-30 23:09:58 UTC
  • mfrom: (1.13.3 upstream) (29 hardy)
  • mto: This revision was merged to the branch mainline in revision 43.
  • Revision ID: james.westby@ubuntu.com-20080930230958-o6vsgn8c4mm959s0
Tags: 1:5.1p1-3
* Remove unnecessary ssh-vulnkey output in non-verbose mode when no
  compromised or unknown keys were found (closes: #496495).
* Configure with --disable-strip; dh_strip will deal with stripping
  binaries and will honour DEB_BUILD_OPTIONS (thanks, Bernhard R. Link;
  closes: #498681).
* Fix handling of zero-length server banners (thanks, Tomas Mraz; closes:
  #497026).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $OpenBSD: auth2-none.c,v 1.13 2006/08/05 07:52:52 dtucker Exp $ */
 
1
/* $OpenBSD: auth2-none.c,v 1.15 2008/07/02 12:36:39 djm Exp $ */
2
2
/*
3
3
 * Copyright (c) 2000 Markus Friedl.  All rights reserved.
4
4
 *
31
31
 
32
32
#include <fcntl.h>
33
33
#include <stdarg.h>
 
34
#include <string.h>
34
35
#include <unistd.h>
35
36
 
 
37
#include "atomicio.h"
36
38
#include "xmalloc.h"
37
39
#include "key.h"
38
40
#include "hostfile.h"
41
43
#include "log.h"
42
44
#include "buffer.h"
43
45
#include "servconf.h"
44
 
#include "atomicio.h"
45
46
#include "compat.h"
46
47
#include "ssh2.h"
47
48
#ifdef GSSAPI
55
56
/* "none" is allowed only one time */
56
57
static int none_enabled = 1;
57
58
 
58
 
char *
59
 
auth2_read_banner(void)
60
 
{
61
 
        struct stat st;
62
 
        char *banner = NULL;
63
 
        size_t len, n;
64
 
        int fd;
65
 
 
66
 
        if ((fd = open(options.banner, O_RDONLY)) == -1)
67
 
                return (NULL);
68
 
        if (fstat(fd, &st) == -1) {
69
 
                close(fd);
70
 
                return (NULL);
71
 
        }
72
 
        if (st.st_size > 1*1024*1024) {
73
 
                close(fd);
74
 
                return (NULL);
75
 
        }
76
 
 
77
 
        len = (size_t)st.st_size;               /* truncate */
78
 
        banner = xmalloc(len + 1);
79
 
        n = atomicio(read, fd, banner, len);
80
 
        close(fd);
81
 
 
82
 
        if (n != len) {
83
 
                xfree(banner);
84
 
                return (NULL);
85
 
        }
86
 
        banner[n] = '\0';
87
 
 
88
 
        return (banner);
89
 
}
90
 
 
91
 
void
92
 
userauth_send_banner(const char *msg)
93
 
{
94
 
        if (datafellows & SSH_BUG_BANNER)
95
 
                return;
96
 
 
97
 
        packet_start(SSH2_MSG_USERAUTH_BANNER);
98
 
        packet_put_cstring(msg);
99
 
        packet_put_cstring("");         /* language, unused */
100
 
        packet_send();
101
 
        debug("%s: sent", __func__);
102
 
}
103
 
 
104
 
static void
105
 
userauth_banner(void)
106
 
{
107
 
        char *banner = NULL;
108
 
 
109
 
        if (options.banner == NULL || (datafellows & SSH_BUG_BANNER))
110
 
                return;
111
 
 
112
 
        if ((banner = PRIVSEP(auth2_read_banner())) == NULL)
113
 
                goto done;
114
 
        userauth_send_banner(banner);
115
 
 
116
 
done:
117
 
        if (banner)
118
 
                xfree(banner);
119
 
}
120
 
 
121
59
static int
122
60
userauth_none(Authctxt *authctxt)
123
61
{
124
62
        none_enabled = 0;
125
63
        packet_check_eom();
126
 
        userauth_banner();
127
64
#ifdef HAVE_CYGWIN
128
65
        if (check_nt_auth(1, authctxt->pw) == 0)
129
66
                return (0);