From 5cbe8d07fb23db630e76d18022f20368312720ec Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 5 Apr 2011 21:10:46 +0200 Subject: [PATCH] getdata: increase max number of shared networks MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Anders & Thor Eivind reported dhcpd-pools to mess console and crash at the end of execution. Reason was missing boundary check. The fix this time is more of less just a increase to max numbers. That will work ot some extent. The memory allocations has to be made fully dynamic, but that is a little bit difficult with the way default.h and parse_config are working. Basically problem is globals gone crazy & re-entrant issue with parse function. The true fix to the issue will have to wait for complete redesign of internals of the command. Reported-by: Anders LĂ„stad Reported-by: Thor Eivind Brantzeg Signed-off-by: Sami Kerola --- src/defaults.h | 4 ++-- src/getdata.c | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/defaults.h b/src/defaults.h index 3115751..c34e4be 100644 --- a/src/defaults.h +++ b/src/defaults.h @@ -22,10 +22,10 @@ static const int MAXLEN = 1024; /* Total number of characters in all shared network names */ -static const int SHARED_NETWORKS_NAMES = 24576; +static const int SHARED_NETWORKS_NAMES = 65536; /* Maximum number of shared networks */ -static const int SHARED_NETWORKS = 1024; +static const int SHARED_NETWORKS = 8192; /* Maximum number of ranges */ static const unsigned int RANGES = 65536; diff --git a/src/getdata.c b/src/getdata.c index c25d87e..c57d2c7 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -388,7 +388,7 @@ char *parse_config(int is_include, char *config_file, num_ranges++; if (RANGES < num_ranges) { errx(EXIT_FAILURE, - "parse_config: Range space full! Increase RANGES and recompile."); + "parse_config: increase default.h RANGES and recompile."); } newclause = true; break; @@ -427,8 +427,15 @@ char *parse_config(int is_include, char *config_file, * away by reallocationg * more space. */ errx(EXIT_FAILURE, - "parse_config: End of shared-network space, increase SHARED_NETWORKS_NAMES and recompile"); + "parse_config: increase default.h SHARED_NETWORKS_NAMES and recompile"); } + if (SHARED_NETWORKS < num_shared_networks) { + /* FIXME: make this go + * away by reallocationg + * more space. */ + errx(EXIT_FAILURE, + "parse_config: increase default.h SHARED_NETWORKS and recompile"); + } argument = 0; braces_shared = braces; break; -- 1.7.10.4