=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/ssh-keygen.c,v retrieving revision 1.409.2.1 retrieving revision 1.410 diff -u -r1.409.2.1 -r1.410 --- src/usr.bin/ssh/ssh-keygen.c 2020/05/18 19:02:13 1.409.2.1 +++ src/usr.bin/ssh/ssh-keygen.c 2020/05/13 09:55:57 1.410 @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-keygen.c,v 1.409.2.1 2020/05/18 19:02:13 benno Exp $ */ +/* $OpenBSD: ssh-keygen.c,v 1.410 2020/05/13 09:55:57 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1994 Tatu Ylonen , Espoo, Finland @@ -1270,6 +1270,7 @@ int r, fd, oerrno, inplace = 0; struct known_hosts_ctx ctx; u_int foreach_options; + struct stat sb; if (!have_identity) { cp = tilde_expand_filename(_PATH_SSH_USER_HOSTFILE, pw->pw_uid); @@ -1279,6 +1280,8 @@ free(cp); have_identity = 1; } + if (stat(identity_file, &sb) != 0) + fatal("Cannot stat %s: %s", identity_file, strerror(errno)); memset(&ctx, 0, sizeof(ctx)); ctx.out = stdout; @@ -1305,6 +1308,7 @@ unlink(tmp); fatal("fdopen: %s", strerror(oerrno)); } + fchmod(fd, sb.st_mode & 0644); inplace = 1; } /* XXX support identity_file == "-" for stdin */ @@ -2928,16 +2932,14 @@ &keys, &nkeys)) != 0) { if (i == 0 && r == SSH_ERR_KEY_WRONG_PASSPHRASE) continue; - if (pin != NULL) - freezero(pin, strlen(pin)); + freezero(pin, strlen(pin)); error("Unable to load resident keys: %s", ssh_err(r)); return -1; } } if (nkeys == 0) logit("No keys to download"); - if (pin != NULL) - freezero(pin, strlen(pin)); + freezero(pin, strlen(pin)); for (i = 0; i < nkeys; i++) { if (keys[i]->type != KEY_ECDSA_SK &&