From: Matt Traudt Date: Wed, 13 Sep 2017 16:47:02 +0000 (-0400) Subject: sched: validate KIST sched options X-Git-Tag: tor-0.3.2.1-alpha~31^2~20 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7f1d6430833a15a1ec806f9d17babc7d653b08ac;p=thirdparty%2Ftor.git sched: validate KIST sched options --- diff --git a/src/or/config.c b/src/or/config.c index 285d4952f2..f332ac97f8 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -3112,6 +3112,19 @@ options_validate(or_options_t *old_options, or_options_t *options, routerset_union(options->ExcludeExitNodesUnion_,options->ExcludeNodes); } + if (options->KISTSockBufSizeFactor < 0) { + REJECT("KISTSockBufSizeFactor must be at least 0"); + } + /* Don't need to validate that the Interval is less than anything because + * zero is valid and all negative values are valid. */ + if (options->KISTSchedRunInterval > KIST_SCHED_RUN_INTERVAL_MAX) { + char *buf = tor_calloc(80, sizeof(char)); + tor_snprintf(buf, 80, "KISTSchedRunInterval must not be more than %d (ms)", + KIST_SCHED_RUN_INTERVAL_MAX); + *msg = buf; + return -1; + } + if (options->NodeFamilies) { options->NodeFamilySets = smartlist_new(); for (cl = options->NodeFamilies; cl; cl = cl->next) { diff --git a/src/or/scheduler.h b/src/or/scheduler.h index 6cf75c585a..0d82352734 100644 --- a/src/or/scheduler.h +++ b/src/or/scheduler.h @@ -82,6 +82,20 @@ typedef struct scheduler_s { void (*on_new_options)(void); } scheduler_t; +/***************************************************************************** + * Globally visible scheduler variables/values + * + * These are variables/constants that all of Tor should be able to see. + *****************************************************************************/ + +/* Default interval that KIST runs (in ms). */ +#define KIST_SCHED_RUN_INTERVAL_DEFAULT 10 +/* Minimum interval that KIST runs. This value disables KIST. */ +#define KIST_SCHED_RUN_INTERVAL_MIN 0 +/* Maximum interval that KIST runs (in ms). */ +#define KIST_SCHED_RUN_INTERVAL_MAX 100 + + /***************************************************************************** * Globally visible scheduler functions * diff --git a/src/or/scheduler_kist.c b/src/or/scheduler_kist.c index d3b19fdd1d..3c3d26ad5a 100644 --- a/src/or/scheduler_kist.c +++ b/src/or/scheduler_kist.c @@ -623,13 +623,6 @@ get_kist_scheduler(void) return kist_scheduler; } -/* Default interval that KIST runs (in ms). */ -#define KIST_SCHED_RUN_INTERVAL_DEFAULT 10 -/* Minimum interval that KIST runs. This value disables KIST. */ -#define KIST_SCHED_RUN_INTERVAL_MIN 0 -/* Maximum interval that KIST runs (in ms). */ -#define KIST_SCHED_RUN_INTERVAL_MAX 100 - /* Check the torrc for the configured KIST scheduler run interval. * - If torrc < 0, then return the negative torrc value (shouldn't even be * using KIST)