diff options
author | Colin Watson <cjwatson@debian.org> | 2005-05-25 11:01:01 +0000 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2005-05-25 11:01:01 +0000 |
commit | e88de75a1a236779a10e8ccbcc51d25308be8840 (patch) | |
tree | 7495477a2a7d0cac17a9fcded020b6ea816182ef /authfile.c | |
parent | 30a0f9443782cd9d7308acd09430bf586186aa55 (diff) | |
parent | 5d05471f6657646d1d6500c7c43134462c407ee6 (diff) |
Merge 4.0p1 to the trunk.
Diffstat (limited to 'authfile.c')
-rw-r--r-- | authfile.c | 17 |
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" |
39 | RCSID("$OpenBSD: authfile.c,v 1.57 2004/06/21 17:36:31 avsm Exp $"); | 39 | RCSID("$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. */ |
56 | static const char authfile_id_string[] = | 57 | static 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 | |||
598 | key_try_load_public(Key *k, const char *filename, char **commentp) | 602 | key_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 '#': |