summaryrefslogtreecommitdiff
path: root/usr.bin/ssh/sshkey.c
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2015-01-12 20:13:28 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2015-01-12 20:13:28 +0000
commit481cc193f6d765e84808b41d9d840b6accba96b8 (patch)
tree1d3fbe442ffa3dd0d9c3aeea64a9911fbca06f19 /usr.bin/ssh/sshkey.c
parentfbe0318a9e8e3dd5dae140bcf57a54b0a0d93bbc (diff)
unbreak parsing of pubkey comments; with gerhard; ok djm/deraadt
Diffstat (limited to 'usr.bin/ssh/sshkey.c')
-rw-r--r--usr.bin/ssh/sshkey.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/usr.bin/ssh/sshkey.c b/usr.bin/ssh/sshkey.c
index 4421bff08f7..1fd3136340f 100644
--- a/usr.bin/ssh/sshkey.c
+++ b/usr.bin/ssh/sshkey.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.c,v 1.9 2015/01/12 13:29:27 markus Exp $ */
+/* $OpenBSD: sshkey.c,v 1.10 2015/01/12 20:13:27 markus Exp $ */
/*
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -1251,8 +1251,14 @@ sshkey_read(struct sshkey *ret, char **cpp)
return SSH_ERR_ALLOC_FAIL;
/* trim comment */
space = strchr(cp, ' ');
- if (space)
- *space = '\0';
+ if (space) {
+ /* advance 'space': skip whitespace */
+ *space++ = '\0';
+ while (*space == ' ' || *space == '\t')
+ space++;
+ *cpp = space;
+ } else
+ *cpp = cp + strlen(cp);
if ((r = sshbuf_b64tod(blob, cp)) != 0) {
sshbuf_free(blob);
return r;
@@ -1327,12 +1333,6 @@ sshkey_read(struct sshkey *ret, char **cpp)
sshkey_free(k);
if (retval != 0)
break;
- /* advance cp: skip whitespace and data */
- while (*cp == ' ' || *cp == '\t')
- cp++;
- while (*cp != '\0' && *cp != ' ' && *cp != '\t')
- cp++;
- *cpp = cp;
break;
default:
return SSH_ERR_INVALID_ARGUMENT;