diff options
author | Damien Miller <djm@cvs.openbsd.org> | 2019-09-03 08:30:48 +0000 |
---|---|---|
committer | Damien Miller <djm@cvs.openbsd.org> | 2019-09-03 08:30:48 +0000 |
commit | 791b3a0920ee016eb30e70b8e206bb5e8484572c (patch) | |
tree | 718665ce8dc15722113a478f4cca3e20cab2da51 /usr.bin | |
parent | 25a797a094d0c5bcbdf936621c566402ba196748 (diff) |
move advance_past_options to authfile.c and make it public;
ok markus@
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/ssh/auth2-pubkey.c | 26 | ||||
-rw-r--r-- | usr.bin/ssh/authfile.c | 24 | ||||
-rw-r--r-- | usr.bin/ssh/authfile.h | 3 |
3 files changed, 27 insertions, 26 deletions
diff --git a/usr.bin/ssh/auth2-pubkey.c b/usr.bin/ssh/auth2-pubkey.c index 88733d1664d..d618289676d 100644 --- a/usr.bin/ssh/auth2-pubkey.c +++ b/usr.bin/ssh/auth2-pubkey.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-pubkey.c,v 1.92 2019/09/03 08:29:58 djm Exp $ */ +/* $OpenBSD: auth2-pubkey.c,v 1.93 2019/09/03 08:30:47 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -536,28 +536,6 @@ match_principals_command(struct ssh *ssh, struct passwd *user_pw, } /* - * Advanced *cpp past the end of key options, defined as the first unquoted - * whitespace character. Returns 0 on success or -1 on failure (e.g. - * unterminated quotes). - */ -static int -advance_past_options(char **cpp) -{ - char *cp = *cpp; - int quoted = 0; - - for (; *cp && (quoted || (*cp != ' ' && *cp != '\t')); cp++) { - if (*cp == '\\' && cp[1] == '"') - cp++; /* Skip both */ - else if (*cp == '"') - quoted = !quoted; - } - *cpp = cp; - /* return failure for unterminated quotes */ - return (*cp == '\0' && quoted) ? -1 : 0; -} - -/* * Check a single line of an authorized_keys-format file. Returns 0 if key * matches, -1 otherwise. Will return key/cert options via *authoptsp * on success. "loc" is used as file/line location in log messages. @@ -587,7 +565,7 @@ check_authkey_line(struct ssh *ssh, struct passwd *pw, struct sshkey *key, /* no key? check for options */ debug2("%s: check options: '%s'", loc, cp); key_options = cp; - if (advance_past_options(&cp) != 0) { + if (sshkey_advance_past_options(&cp) != 0) { reason = "invalid key option string"; goto fail_reason; } diff --git a/usr.bin/ssh/authfile.c b/usr.bin/ssh/authfile.c index 1be58654256..ac9b4324c13 100644 --- a/usr.bin/ssh/authfile.c +++ b/usr.bin/ssh/authfile.c @@ -1,4 +1,4 @@ -/* $OpenBSD: authfile.c,v 1.134 2019/08/05 11:50:33 dtucker Exp $ */ +/* $OpenBSD: authfile.c,v 1.135 2019/09/03 08:30:47 djm Exp $ */ /* * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved. * @@ -523,3 +523,25 @@ sshkey_check_revoked(struct sshkey *key, const char *revoked_keys_file) } } +/* + * Advanced *cpp past the end of key options, defined as the first unquoted + * whitespace character. Returns 0 on success or -1 on failure (e.g. + * unterminated quotes). + */ +int +sshkey_advance_past_options(char **cpp) +{ + char *cp = *cpp; + int quoted = 0; + + for (; *cp && (quoted || (*cp != ' ' && *cp != '\t')); cp++) { + if (*cp == '\\' && cp[1] == '"') + cp++; /* Skip both */ + else if (*cp == '"') + quoted = !quoted; + } + *cpp = cp; + /* return failure for unterminated quotes */ + return (*cp == '\0' && quoted) ? -1 : 0; +} + diff --git a/usr.bin/ssh/authfile.h b/usr.bin/ssh/authfile.h index 54df169b3dd..9c8a95a016c 100644 --- a/usr.bin/ssh/authfile.h +++ b/usr.bin/ssh/authfile.h @@ -1,4 +1,4 @@ -/* $OpenBSD: authfile.h,v 1.22 2019/08/05 11:50:33 dtucker Exp $ */ +/* $OpenBSD: authfile.h,v 1.23 2019/09/03 08:30:47 djm Exp $ */ /* * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved. @@ -48,5 +48,6 @@ int sshkey_load_private_type_fd(int fd, int type, const char *passphrase, int sshkey_perm_ok(int, const char *); int sshkey_in_file(struct sshkey *, const char *, int, int); int sshkey_check_revoked(struct sshkey *key, const char *revoked_keys_file); +int sshkey_advance_past_options(char **cpp); #endif |