diff options
author | Ben Lindstrom <mouring@eviladmin.org> | 2002-12-23 02:00:23 +0000 |
---|---|---|
committer | Ben Lindstrom <mouring@eviladmin.org> | 2002-12-23 02:00:23 +0000 |
commit | 44adb8fed9214d209eb8d7d47d5adb053c69f190 (patch) | |
tree | 16ca85f439875b40ccd936e4e943817cb901894a | |
parent | ab1c12a11c0c05223405a814d39281b5b0b9b712 (diff) | |
download | openssh-git-44adb8fed9214d209eb8d7d47d5adb053c69f190.tar.gz |
- fgsch@cvs.openbsd.org 2002/11/15 10:03:09
[authfile.c]
lseek(2) may return -1 when getting the public/private key lenght.
Simplify the code and check for errors using fstat(2).
Problem reported by Mauricio Sanchez, markus@ ok.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | authfile.c | 21 |
2 files changed, 26 insertions, 6 deletions
@@ -1,3 +1,12 @@ +20021222 + - (bal) OpenBSD CVS Sync + - fgsch@cvs.openbsd.org 2002/11/15 10:03:09 + [authfile.c] + lseek(2) may return -1 when getting the public/private key lenght. + Simplify the code and check for errors using fstat(2). + + Problem reported by Mauricio Sanchez, markus@ ok. + 20021205 - (djm) PERL-free fixpaths from stuge-openssh-unix-dev@cdy.org @@ -832,4 +841,4 @@ save auth method before monitor_reset_key_state(); bugzilla bug #284; ok provos@ -$Id: ChangeLog,v 1.2515 2002/12/05 09:59:33 djm Exp $ +$Id: ChangeLog,v 1.2516 2002/12/23 02:00:23 mouring Exp $ @@ -36,7 +36,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: authfile.c,v 1.50 2002/06/24 14:55:38 markus Exp $"); +RCSID("$OpenBSD: authfile.c,v 1.51 2002/11/15 10:03:09 fgsch Exp $"); #include <openssl/err.h> #include <openssl/evp.h> @@ -232,12 +232,17 @@ key_load_public_rsa1(int fd, const char *filename, char **commentp) { Buffer buffer; Key *pub; + struct stat st; char *cp; int i; off_t len; - len = lseek(fd, (off_t) 0, SEEK_END); - lseek(fd, (off_t) 0, SEEK_SET); + if (fstat(fd, &st) < 0) { + error("fstat for key file %.200s failed: %.100s", + filename, strerror(errno)); + return NULL; + } + len = st.st_size; buffer_init(&buffer); cp = buffer_append_space(&buffer, len); @@ -318,9 +323,15 @@ key_load_private_rsa1(int fd, const char *filename, const char *passphrase, CipherContext ciphercontext; Cipher *cipher; Key *prv = NULL; + struct stat st; - len = lseek(fd, (off_t) 0, SEEK_END); - lseek(fd, (off_t) 0, SEEK_SET); + if (fstat(fd, &st) < 0) { + error("fstat for key file %.200s failed: %.100s", + filename, strerror(errno)); + close(fd); + return NULL; + } + len = st.st_size; buffer_init(&buffer); cp = buffer_append_space(&buffer, len); |