1
0
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:
Simon Tatham
2007-01-09 18:14:30 +00:00
parent dbbd6eb5ec
commit 4fa9564c90
9 changed files with 37 additions and 22 deletions

View File

@ -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);