diff options
author | djm@openbsd.org <djm@openbsd.org> | 2018-08-12 20:19:13 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2018-08-13 12:42:13 +1000 |
commit | 1b9dd4aa15208100fbc3650f33ea052255578282 (patch) | |
tree | 6b733b4ececbe643a04a405d82c2d2ba86a8d7dd | |
parent | e36a5f61b0f5bebf6d49c215d228cd99dfe86e28 (diff) |
upstream: better diagnosics on alg list assembly errors; ok
deraadt@ markus@
OpenBSD-Commit-ID: 5a557e74b839daf13cc105924d2af06a1560faee
-rw-r--r-- | readconf.c | 27 | ||||
-rw-r--r-- | servconf.c | 28 |
2 files changed, 29 insertions, 26 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: readconf.c,v 1.296 2018/07/27 05:34:42 dtucker Exp $ */ +/* $OpenBSD: readconf.c,v 1.297 2018/08/12 20:19:13 djm Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -53,6 +53,7 @@ #include "xmalloc.h" #include "ssh.h" +#include "ssherr.h" #include "compat.h" #include "cipher.h" #include "pathnames.h" @@ -1924,6 +1925,7 @@ void fill_default_options(Options * options) { char *all_cipher, *all_mac, *all_kex, *all_key; + int r; if (options->forward_agent == -1) options->forward_agent = 0; @@ -2075,17 +2077,18 @@ fill_default_options(Options * options) all_mac = mac_alg_list(','); all_kex = kex_alg_list(','); all_key = sshkey_alg_list(0, 0, 1, ','); - if (kex_assemble_names(&options->ciphers, - KEX_CLIENT_ENCRYPT, all_cipher) != 0 || - kex_assemble_names(&options->macs, - KEX_CLIENT_MAC, all_mac) != 0 || - kex_assemble_names(&options->kex_algorithms, - KEX_CLIENT_KEX, all_kex) != 0 || - kex_assemble_names(&options->hostbased_key_types, - KEX_DEFAULT_PK_ALG, all_key) != 0 || - kex_assemble_names(&options->pubkey_key_types, - KEX_DEFAULT_PK_ALG, all_key) != 0) - fatal("%s: kex_assemble_names failed", __func__); +#define ASSEMBLE(what, defaults, all) \ + do { \ + if ((r = kex_assemble_names(&options->what, \ + defaults, all)) != 0) \ + fatal("%s: %s: %s", __func__, #what, ssh_err(r)); \ + } while (0) + ASSEMBLE(ciphers, KEX_SERVER_ENCRYPT, all_cipher); + ASSEMBLE(macs, KEX_SERVER_MAC, all_mac); + ASSEMBLE(kex_algorithms, KEX_SERVER_KEX, all_kex); + ASSEMBLE(hostbased_key_types, KEX_DEFAULT_PK_ALG, all_key); + ASSEMBLE(pubkey_key_types, KEX_DEFAULT_PK_ALG, all_key); +#undef ASSEMBLE free(all_cipher); free(all_mac); free(all_kex); @@ -1,5 +1,5 @@ -/* $OpenBSD: servconf.c,v 1.339 2018/07/11 18:53:29 markus Exp $ */ +/* $OpenBSD: servconf.c,v 1.340 2018/08/12 20:19:13 djm Exp $ */ /* * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * All rights reserved @@ -192,24 +192,24 @@ static void assemble_algorithms(ServerOptions *o) { char *all_cipher, *all_mac, *all_kex, *all_key; + int r; all_cipher = cipher_alg_list(',', 0); all_mac = mac_alg_list(','); all_kex = kex_alg_list(','); all_key = sshkey_alg_list(0, 0, 1, ','); - if (kex_assemble_names(&o->ciphers, - KEX_SERVER_ENCRYPT, all_cipher) != 0 || - kex_assemble_names(&o->macs, - KEX_SERVER_MAC, all_mac) != 0 || - kex_assemble_names(&o->kex_algorithms, - KEX_SERVER_KEX, all_kex) != 0 || - kex_assemble_names(&o->hostkeyalgorithms, - KEX_DEFAULT_PK_ALG, all_key) != 0 || - kex_assemble_names(&o->hostbased_key_types, - KEX_DEFAULT_PK_ALG, all_key) != 0 || - kex_assemble_names(&o->pubkey_key_types, - KEX_DEFAULT_PK_ALG, all_key) != 0) - fatal("kex_assemble_names failed"); +#define ASSEMBLE(what, defaults, all) \ + do { \ + if ((r = kex_assemble_names(&o->what, defaults, all)) != 0) \ + fatal("%s: %s: %s", __func__, #what, ssh_err(r)); \ + } while (0) + ASSEMBLE(ciphers, KEX_SERVER_ENCRYPT, all_cipher); + ASSEMBLE(macs, KEX_SERVER_MAC, all_mac); + ASSEMBLE(kex_algorithms, KEX_SERVER_KEX, all_kex); + ASSEMBLE(hostkeyalgorithms, KEX_DEFAULT_PK_ALG, all_key); + ASSEMBLE(hostbased_key_types, KEX_DEFAULT_PK_ALG, all_key); + ASSEMBLE(pubkey_key_types, KEX_DEFAULT_PK_ALG, all_key); +#undef ASSEMBLE free(all_cipher); free(all_mac); free(all_kex); |