aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keygen.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/keygen.c')
-rw-r--r--g10/keygen.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/g10/keygen.c b/g10/keygen.c
index 6380ca171..42722d9f2 100644
--- a/g10/keygen.c
+++ b/g10/keygen.c
@@ -167,7 +167,7 @@ copy_mpi (MPI a, unsigned char *buffer, size_t len, size_t *ncopied)
static void
print_status_key_created (int letter, PKT_public_key *pk, const char *handle)
{
- unsigned char array[MAX_FINGERPRINT_LEN], *s;
+ byte array[MAX_FINGERPRINT_LEN], *s;
char *buf, *p;
size_t i, n;
@@ -2683,9 +2683,14 @@ do_generate_keypair( struct para_data_s *para,
outctrl->pub.fname = outctrl->pub.newfname;
outctrl->pub.newfname = NULL;
- outctrl->pub.stream = iobuf_create( outctrl->pub.fname );
+ if (is_secured_filename (outctrl->pub.fname) ) {
+ outctrl->pub.stream = NULL;
+ errno = EPERM;
+ }
+ else
+ outctrl->pub.stream = iobuf_create( outctrl->pub.fname );
if( !outctrl->pub.stream ) {
- log_error("can't create `%s': %s\n", outctrl->pub.newfname,
+ log_error(_("can't create `%s': %s\n"), outctrl->pub.newfname,
strerror(errno) );
return;
}
@@ -2707,10 +2712,15 @@ do_generate_keypair( struct para_data_s *para,
outctrl->sec.newfname = NULL;
oldmask = umask (077);
- outctrl->sec.stream = iobuf_create( outctrl->sec.fname );
+ if (is_secured_filename (outctrl->sec.fname) ) {
+ outctrl->sec.stream = NULL;
+ errno = EPERM;
+ }
+ else
+ outctrl->sec.stream = iobuf_create( outctrl->sec.fname );
umask (oldmask);
if( !outctrl->sec.stream ) {
- log_error("can't create `%s': %s\n", outctrl->sec.newfname,
+ log_error(_("can't create `%s': %s\n"), outctrl->sec.newfname,
strerror(errno) );
return;
}
@@ -3328,7 +3338,13 @@ gen_card_key_with_backup (int algo, int keyno, int is_primary,
fname = make_filename (backup_dir, name_buffer, NULL);
oldmask = umask (077);
- fp = iobuf_create (fname);
+ if (is_secured_filename (fname))
+ {
+ fp = NULL;
+ errno = EPERM;
+ }
+ else
+ fp = iobuf_create (fname);
umask (oldmask);
if (!fp)
{