- 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.
This commit is contained in:
parent
ab1c12a11c
commit
44adb8fed9
11
ChangeLog
11
ChangeLog
|
@ -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
|
20021205
|
||||||
- (djm) PERL-free fixpaths from stuge-openssh-unix-dev@cdy.org
|
- (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;
|
save auth method before monitor_reset_key_state(); bugzilla bug #284;
|
||||||
ok provos@
|
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 $
|
||||||
|
|
21
authfile.c
21
authfile.c
|
@ -36,7 +36,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#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/err.h>
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
|
@ -232,12 +232,17 @@ key_load_public_rsa1(int fd, const char *filename, char **commentp)
|
||||||
{
|
{
|
||||||
Buffer buffer;
|
Buffer buffer;
|
||||||
Key *pub;
|
Key *pub;
|
||||||
|
struct stat st;
|
||||||
char *cp;
|
char *cp;
|
||||||
int i;
|
int i;
|
||||||
off_t len;
|
off_t len;
|
||||||
|
|
||||||
len = lseek(fd, (off_t) 0, SEEK_END);
|
if (fstat(fd, &st) < 0) {
|
||||||
lseek(fd, (off_t) 0, SEEK_SET);
|
error("fstat for key file %.200s failed: %.100s",
|
||||||
|
filename, strerror(errno));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
len = st.st_size;
|
||||||
|
|
||||||
buffer_init(&buffer);
|
buffer_init(&buffer);
|
||||||
cp = buffer_append_space(&buffer, len);
|
cp = buffer_append_space(&buffer, len);
|
||||||
|
@ -318,9 +323,15 @@ key_load_private_rsa1(int fd, const char *filename, const char *passphrase,
|
||||||
CipherContext ciphercontext;
|
CipherContext ciphercontext;
|
||||||
Cipher *cipher;
|
Cipher *cipher;
|
||||||
Key *prv = NULL;
|
Key *prv = NULL;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
len = lseek(fd, (off_t) 0, SEEK_END);
|
if (fstat(fd, &st) < 0) {
|
||||||
lseek(fd, (off_t) 0, SEEK_SET);
|
error("fstat for key file %.200s failed: %.100s",
|
||||||
|
filename, strerror(errno));
|
||||||
|
close(fd);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
len = st.st_size;
|
||||||
|
|
||||||
buffer_init(&buffer);
|
buffer_init(&buffer);
|
||||||
cp = buffer_append_space(&buffer, len);
|
cp = buffer_append_space(&buffer, len);
|
||||||
|
|
Loading…
Reference in New Issue