summaryrefslogtreecommitdiff
path: root/servconf.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2018-11-19 04:12:32 +0000
committerDamien Miller <djm@mindrot.org>2018-11-19 15:14:32 +1100
commit928f1231f65f88cd4c73e6e0edd63d2cf6295d77 (patch)
treee72cade439a4a56ad978e5624f36821c0af7c950 /servconf.c
parent7fca94edbe8ca9f879da9fdd2afd959c4180f4c7 (diff)
upstream: silence (to log level debug2) failure messages when
loading the default hostkeys. Hostkeys explicitly specified in the configuration or on the command-line are still reported as errors, and failure to load at least one host key remains a fatal error. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on patch from Dag-Erling Smørgrav via https://github.com/openssh/openssh-portable/pull/103 ok markus@ OpenBSD-Commit-ID: ffc2e35a75d1008effaf05a5e27425041c27b684
Diffstat (limited to 'servconf.c')
-rw-r--r--servconf.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/servconf.c b/servconf.c
index a8727c0fa..52d9be429 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,5 @@
1 1
2/* $OpenBSD: servconf.c,v 1.343 2018/11/16 03:26:01 djm Exp $ */ 2/* $OpenBSD: servconf.c,v 1.344 2018/11/19 04:12:32 djm Exp $ */
3/* 3/*
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5 * All rights reserved 5 * All rights reserved
@@ -221,26 +221,40 @@ assemble_algorithms(ServerOptions *o)
221} 221}
222 222
223static void 223static void
224array_append(const char *file, const int line, const char *directive, 224array_append2(const char *file, const int line, const char *directive,
225 char ***array, u_int *lp, const char *s) 225 char ***array, int **iarray, u_int *lp, const char *s, int i)
226{ 226{
227 227
228 if (*lp >= INT_MAX) 228 if (*lp >= INT_MAX)
229 fatal("%s line %d: Too many %s entries", file, line, directive); 229 fatal("%s line %d: Too many %s entries", file, line, directive);
230 230
231 if (iarray != NULL) {
232 *iarray = xrecallocarray(*iarray, *lp, *lp + 1,
233 sizeof(**iarray));
234 (*iarray)[*lp] = i;
235 }
236
231 *array = xrecallocarray(*array, *lp, *lp + 1, sizeof(**array)); 237 *array = xrecallocarray(*array, *lp, *lp + 1, sizeof(**array));
232 (*array)[*lp] = xstrdup(s); 238 (*array)[*lp] = xstrdup(s);
233 (*lp)++; 239 (*lp)++;
234} 240}
235 241
242static void
243array_append(const char *file, const int line, const char *directive,
244 char ***array, u_int *lp, const char *s)
245{
246 array_append2(file, line, directive, array, NULL, lp, s, 0);
247}
248
236void 249void
237servconf_add_hostkey(const char *file, const int line, 250servconf_add_hostkey(const char *file, const int line,
238 ServerOptions *options, const char *path) 251 ServerOptions *options, const char *path, int userprovided)
239{ 252{
240 char *apath = derelativise_path(path); 253 char *apath = derelativise_path(path);
241 254
242 array_append(file, line, "HostKey", 255 array_append2(file, line, "HostKey",
243 &options->host_key_files, &options->num_host_key_files, apath); 256 &options->host_key_files, &options->host_key_file_userprovided,
257 &options->num_host_key_files, apath, userprovided);
244 free(apath); 258 free(apath);
245} 259}
246 260
@@ -268,16 +282,16 @@ fill_default_server_options(ServerOptions *options)
268 if (options->num_host_key_files == 0) { 282 if (options->num_host_key_files == 0) {
269 /* fill default hostkeys for protocols */ 283 /* fill default hostkeys for protocols */
270 servconf_add_hostkey("[default]", 0, options, 284 servconf_add_hostkey("[default]", 0, options,
271 _PATH_HOST_RSA_KEY_FILE); 285 _PATH_HOST_RSA_KEY_FILE, 0);
272#ifdef OPENSSL_HAS_ECC 286#ifdef OPENSSL_HAS_ECC
273 servconf_add_hostkey("[default]", 0, options, 287 servconf_add_hostkey("[default]", 0, options,
274 _PATH_HOST_ECDSA_KEY_FILE); 288 _PATH_HOST_ECDSA_KEY_FILE, 0);
275#endif 289#endif
276 servconf_add_hostkey("[default]", 0, options, 290 servconf_add_hostkey("[default]", 0, options,
277 _PATH_HOST_ED25519_KEY_FILE); 291 _PATH_HOST_ED25519_KEY_FILE, 0);
278#ifdef WITH_XMSS 292#ifdef WITH_XMSS
279 servconf_add_hostkey("[default]", 0, options, 293 servconf_add_hostkey("[default]", 0, options,
280 _PATH_HOST_XMSS_KEY_FILE); 294 _PATH_HOST_XMSS_KEY_FILE, 0);
281#endif /* WITH_XMSS */ 295#endif /* WITH_XMSS */
282 } 296 }
283 /* No certificates by default */ 297 /* No certificates by default */
@@ -1355,8 +1369,10 @@ process_server_config_line(ServerOptions *options, char *line,
1355 if (!arg || *arg == '\0') 1369 if (!arg || *arg == '\0')
1356 fatal("%s line %d: missing file name.", 1370 fatal("%s line %d: missing file name.",
1357 filename, linenum); 1371 filename, linenum);
1358 if (*activep) 1372 if (*activep) {
1359 servconf_add_hostkey(filename, linenum, options, arg); 1373 servconf_add_hostkey(filename, linenum,
1374 options, arg, 1);
1375 }
1360 break; 1376 break;
1361 1377
1362 case sHostKeyAgent: 1378 case sHostKeyAgent: