diff options
author | 2017-03-03 06:13:11 +0000 | |
---|---|---|
committer | 2017-03-03 06:13:11 +0000 | |
commit | 7dcbd8f773bd076622e39e040dc885412f6a2157 (patch) | |
tree | 459f8796ef257bc371886d4ec9deee8da0f2a526 /usr.bin/ssh/ssh-keygen.c | |
parent | enable FFS2 on armv7 and arm64 ramdisks (diff) | |
download | wireguard-openbsd-7dcbd8f773bd076622e39e040dc885412f6a2157.tar.xz wireguard-openbsd-7dcbd8f773bd076622e39e040dc885412f6a2157.zip |
fix ssh-keygen -H accidentally corrupting known_hosts that contained
already-hashed entries. HKF_MATCH_HOST_HASHED is only set by
hostkeys_foreach() when hostname matching is in use, so we need to look
for the hash marker explicitly.
Diffstat (limited to 'usr.bin/ssh/ssh-keygen.c')
-rw-r--r-- | usr.bin/ssh/ssh-keygen.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/usr.bin/ssh/ssh-keygen.c b/usr.bin/ssh/ssh-keygen.c index dd2e79b5714..9321ffafaa6 100644 --- a/usr.bin/ssh/ssh-keygen.c +++ b/usr.bin/ssh/ssh-keygen.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-keygen.c,v 1.295 2017/02/17 02:32:05 dtucker Exp $ */ +/* $OpenBSD: ssh-keygen.c,v 1.296 2017/03/03 06:13:11 djm Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -1068,6 +1068,7 @@ known_hosts_hash(struct hostkey_foreach_line *l, void *_ctx) struct known_hosts_ctx *ctx = (struct known_hosts_ctx *)_ctx; char *hashed, *cp, *hosts, *ohosts; int has_wild = l->hosts && strcspn(l->hosts, "*?!") != strlen(l->hosts); + int was_hashed = l->hosts[0] == HASH_DELIM; switch (l->status) { case HKF_STATUS_OK: @@ -1076,8 +1077,7 @@ known_hosts_hash(struct hostkey_foreach_line *l, void *_ctx) * Don't hash hosts already already hashed, with wildcard * characters or a CA/revocation marker. */ - if ((l->match & HKF_MATCH_HOST_HASHED) != 0 || - has_wild || l->marker != MRK_NONE) { + if (was_hashed || has_wild || l->marker != MRK_NONE) { fprintf(ctx->out, "%s\n", l->line); if (has_wild && !find_host) { logit("%s:%ld: ignoring host name " |