summaryrefslogtreecommitdiff
path: root/authfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'authfile.c')
-rw-r--r--authfile.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/authfile.c b/authfile.c
index 76a60d020..6a04cd7a9 100644
--- a/authfile.c
+++ b/authfile.c
@@ -36,7 +36,7 @@
36 */ 36 */
37 37
38#include "includes.h" 38#include "includes.h"
39RCSID("$OpenBSD: authfile.c,v 1.57 2004/06/21 17:36:31 avsm Exp $"); 39RCSID("$OpenBSD: authfile.c,v 1.60 2004/12/11 01:48:56 dtucker Exp $");
40 40
41#include <openssl/err.h> 41#include <openssl/err.h>
42#include <openssl/evp.h> 42#include <openssl/evp.h>
@@ -51,6 +51,7 @@ RCSID("$OpenBSD: authfile.c,v 1.57 2004/06/21 17:36:31 avsm Exp $");
51#include "log.h" 51#include "log.h"
52#include "authfile.h" 52#include "authfile.h"
53#include "rsa.h" 53#include "rsa.h"
54#include "misc.h"
54 55
55/* Version identification string for SSH v1 identity files. */ 56/* Version identification string for SSH v1 identity files. */
56static const char authfile_id_string[] = 57static const char authfile_id_string[] =
@@ -243,8 +244,10 @@ key_load_public_rsa1(int fd, const char *filename, char **commentp)
243 filename, strerror(errno)); 244 filename, strerror(errno));
244 return NULL; 245 return NULL;
245 } 246 }
246 if (st.st_size > 1*1024*1024) 247 if (st.st_size > 1*1024*1024) {
247 close(fd); 248 error("key file %.200s too large", filename);
249 return NULL;
250 }
248 len = (size_t)st.st_size; /* truncated */ 251 len = (size_t)st.st_size; /* truncated */
249 252
250 buffer_init(&buffer); 253 buffer_init(&buffer);
@@ -335,6 +338,7 @@ key_load_private_rsa1(int fd, const char *filename, const char *passphrase,
335 return NULL; 338 return NULL;
336 } 339 }
337 if (st.st_size > 1*1024*1024) { 340 if (st.st_size > 1*1024*1024) {
341 error("key file %.200s too large", filename);
338 close(fd); 342 close(fd);
339 return (NULL); 343 return (NULL);
340 } 344 }
@@ -598,13 +602,14 @@ static int
598key_try_load_public(Key *k, const char *filename, char **commentp) 602key_try_load_public(Key *k, const char *filename, char **commentp)
599{ 603{
600 FILE *f; 604 FILE *f;
601 char line[4096]; 605 char line[SSH_MAX_PUBKEY_BYTES];
602 char *cp; 606 char *cp;
607 u_long linenum = 0;
603 608
604 f = fopen(filename, "r"); 609 f = fopen(filename, "r");
605 if (f != NULL) { 610 if (f != NULL) {
606 while (fgets(line, sizeof(line), f)) { 611 while (read_keyfile_line(f, filename, line, sizeof(line),
607 line[sizeof(line)-1] = '\0'; 612 &linenum) != -1) {
608 cp = line; 613 cp = line;
609 switch (*cp) { 614 switch (*cp) {
610 case '#': 615 case '#':