summaryrefslogtreecommitdiff
path: root/auth2-none.c
diff options
context:
space:
mode:
Diffstat (limited to 'auth2-none.c')
-rw-r--r--auth2-none.c11
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"
26RCSID("$OpenBSD: auth2-none.c,v 1.6 2003/08/26 09:58:43 markus Exp $"); 26RCSID("$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);