mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-02 03:52:49 -05:00
Fix `puttygen-unix-perms': f_open(), PuTTY's wrapper on fopen, now
takes a third argument which is TRUE if the file is being opened for writing and wants to be created in such a way that it's readable only to the owner. This is used when saving private keys. While I'm here, I also use this option when writing session logs, on the general principle that they probably contain _something_ sensitive. The new argument is only supported on Unix, for the moment. (I think writing owner-accessible-only files is the default on Windows.) [originally from svn r7084]
This commit is contained in:
18
sshpubk.c
18
sshpubk.c
@ -162,7 +162,7 @@ int loadrsakey(const Filename *filename, struct RSAKey *key, char *passphrase,
|
||||
int ret = 0;
|
||||
const char *error = NULL;
|
||||
|
||||
fp = f_open(*filename, "rb");
|
||||
fp = f_open(*filename, "rb", FALSE);
|
||||
if (!fp) {
|
||||
error = "can't open file";
|
||||
goto end;
|
||||
@ -203,7 +203,7 @@ int rsakey_encrypted(const Filename *filename, char **comment)
|
||||
FILE *fp;
|
||||
char buf[64];
|
||||
|
||||
fp = f_open(*filename, "rb");
|
||||
fp = f_open(*filename, "rb", FALSE);
|
||||
if (!fp)
|
||||
return 0; /* doesn't even exist */
|
||||
|
||||
@ -241,7 +241,7 @@ int rsakey_pubblob(const Filename *filename, void **blob, int *bloblen,
|
||||
*bloblen = 0;
|
||||
ret = 0;
|
||||
|
||||
fp = f_open(*filename, "rb");
|
||||
fp = f_open(*filename, "rb", FALSE);
|
||||
if (!fp) {
|
||||
error = "can't open file";
|
||||
goto end;
|
||||
@ -364,7 +364,7 @@ int saversakey(const Filename *filename, struct RSAKey *key, char *passphrase)
|
||||
/*
|
||||
* Done. Write the result to the file.
|
||||
*/
|
||||
fp = f_open(*filename, "wb");
|
||||
fp = f_open(*filename, "wb", TRUE);
|
||||
if (fp) {
|
||||
int ret = (fwrite(buf, 1, p - buf, fp) == (size_t) (p - buf));
|
||||
if (fclose(fp))
|
||||
@ -634,7 +634,7 @@ struct ssh2_userkey *ssh2_load_userkey(const Filename *filename,
|
||||
encryption = comment = mac = NULL;
|
||||
public_blob = private_blob = NULL;
|
||||
|
||||
fp = f_open(*filename, "rb");
|
||||
fp = f_open(*filename, "rb", FALSE);
|
||||
if (!fp) {
|
||||
error = "can't open file";
|
||||
goto error;
|
||||
@ -883,7 +883,7 @@ unsigned char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
|
||||
|
||||
public_blob = NULL;
|
||||
|
||||
fp = f_open(*filename, "rb");
|
||||
fp = f_open(*filename, "rb", FALSE);
|
||||
if (!fp) {
|
||||
error = "can't open file";
|
||||
goto error;
|
||||
@ -964,7 +964,7 @@ int ssh2_userkey_encrypted(const Filename *filename, char **commentptr)
|
||||
if (commentptr)
|
||||
*commentptr = NULL;
|
||||
|
||||
fp = f_open(*filename, "rb");
|
||||
fp = f_open(*filename, "rb", FALSE);
|
||||
if (!fp)
|
||||
return 0;
|
||||
if (!read_header(fp, header)
|
||||
@ -1145,7 +1145,7 @@ int ssh2_save_userkey(const Filename *filename, struct ssh2_userkey *key,
|
||||
memset(&s, 0, sizeof(s));
|
||||
}
|
||||
|
||||
fp = f_open(*filename, "w");
|
||||
fp = f_open(*filename, "w", TRUE);
|
||||
if (!fp)
|
||||
return 0;
|
||||
fprintf(fp, "PuTTY-User-Key-File-2: %s\n", key->alg->name);
|
||||
@ -1181,7 +1181,7 @@ int key_type(const Filename *filename)
|
||||
const char openssh_sig[] = "-----BEGIN ";
|
||||
int i;
|
||||
|
||||
fp = f_open(*filename, "r");
|
||||
fp = f_open(*filename, "r", FALSE);
|
||||
if (!fp)
|
||||
return SSH_KEYTYPE_UNOPENABLE;
|
||||
i = fread(buf, 1, sizeof(buf), fp);
|
||||
|
Reference in New Issue
Block a user