diff options
Diffstat (limited to 'auth2-none.c')
-rw-r--r-- | auth2-none.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/auth2-none.c b/auth2-none.c index c342addec..2bf5b5c80 100644 --- a/auth2-none.c +++ b/auth2-none.c | |||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: auth2-none.c,v 1.6 2003/08/26 09:58:43 markus Exp $"); | 26 | RCSID("$OpenBSD: auth2-none.c,v 1.7 2004/05/11 19:01:43 deraadt Exp $"); |
27 | 27 | ||
28 | #include "auth.h" | 28 | #include "auth.h" |
29 | #include "xmalloc.h" | 29 | #include "xmalloc.h" |
@@ -46,7 +46,7 @@ auth2_read_banner(void) | |||
46 | { | 46 | { |
47 | struct stat st; | 47 | struct stat st; |
48 | char *banner = NULL; | 48 | char *banner = NULL; |
49 | off_t len, n; | 49 | size_t len, n; |
50 | int fd; | 50 | int fd; |
51 | 51 | ||
52 | if ((fd = open(options.banner, O_RDONLY)) == -1) | 52 | if ((fd = open(options.banner, O_RDONLY)) == -1) |
@@ -55,7 +55,12 @@ auth2_read_banner(void) | |||
55 | close(fd); | 55 | close(fd); |
56 | return (NULL); | 56 | return (NULL); |
57 | } | 57 | } |
58 | len = st.st_size; | 58 | if (st.st_size > 1*1024*1024) { |
59 | close(fd); | ||
60 | return (NULL); | ||
61 | } | ||
62 | |||
63 | len = (size_t)st.st_size; /* truncate */ | ||
59 | banner = xmalloc(len + 1); | 64 | banner = xmalloc(len + 1); |
60 | n = atomicio(read, fd, banner, len); | 65 | n = atomicio(read, fd, banner, len); |
61 | close(fd); | 66 | close(fd); |