mirror of git://anongit.mindrot.org/openssh.git
upstream: allocate the subsystems array as necessary and remove the
fixed limit of subsystems. Saves a few kb of memory in the server and makes it more like the other options. OpenBSD-Commit-ID: e683dfca6bdcbc3cc339bb6c6517c0c4736a547f
This commit is contained in:
parent
e19069c9fa
commit
6e52826e2a
18
servconf.c
18
servconf.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: servconf.c,v 1.399 2023/09/06 23:23:53 djm Exp $ */
|
/* $OpenBSD: servconf.c,v 1.400 2023/09/06 23:26:37 djm Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
* All rights reserved
|
* All rights reserved
|
||||||
|
@ -1933,10 +1933,6 @@ process_server_config_line_depth(ServerOptions *options, char *line,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case sSubsystem:
|
case sSubsystem:
|
||||||
if (options->num_subsystems >= MAX_SUBSYSTEMS) {
|
|
||||||
fatal("%s line %d: too many subsystems defined.",
|
|
||||||
filename, linenum);
|
|
||||||
}
|
|
||||||
arg = argv_next(&ac, &av);
|
arg = argv_next(&ac, &av);
|
||||||
if (!arg || *arg == '\0')
|
if (!arg || *arg == '\0')
|
||||||
fatal("%s line %d: %s missing argument.",
|
fatal("%s line %d: %s missing argument.",
|
||||||
|
@ -1958,6 +1954,18 @@ process_server_config_line_depth(ServerOptions *options, char *line,
|
||||||
argv_consume(&ac);
|
argv_consume(&ac);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
options->subsystem_name = xrecallocarray(
|
||||||
|
options->subsystem_name, options->num_subsystems,
|
||||||
|
options->num_subsystems + 1,
|
||||||
|
sizeof(options->subsystem_name));
|
||||||
|
options->subsystem_command = xrecallocarray(
|
||||||
|
options->subsystem_command, options->num_subsystems,
|
||||||
|
options->num_subsystems + 1,
|
||||||
|
sizeof(options->subsystem_command));
|
||||||
|
options->subsystem_args = xrecallocarray(
|
||||||
|
options->subsystem_args, options->num_subsystems,
|
||||||
|
options->num_subsystems + 1,
|
||||||
|
sizeof(options->subsystem_args));
|
||||||
options->subsystem_name[options->num_subsystems] = xstrdup(arg);
|
options->subsystem_name[options->num_subsystems] = xstrdup(arg);
|
||||||
arg = argv_next(&ac, &av);
|
arg = argv_next(&ac, &av);
|
||||||
if (!arg || *arg == '\0') {
|
if (!arg || *arg == '\0') {
|
||||||
|
|
Loading…
Reference in New Issue