vici: Correctly parse inactivity timeout as uint32_t
Using parse_time() directly actually overwrites the next member in the child_cfg_create_t struct, which is start_action, which can cause incorrect configs if inactivity is parsed after start_action. Fixes #2954.
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
* Copyright (C) 2014 Martin Willi
|
* Copyright (C) 2014 Martin Willi
|
||||||
* Copyright (C) 2014 revosec AG
|
* Copyright (C) 2014 revosec AG
|
||||||
*
|
*
|
||||||
* Copyright (C) 2015-2018 Tobias Brunner
|
* Copyright (C) 2015-2019 Tobias Brunner
|
||||||
* Copyright (C) 2015-2018 Andreas Steffen
|
* Copyright (C) 2015-2018 Andreas Steffen
|
||||||
* HSR Hochschule fuer Technik Rapperswil
|
* HSR Hochschule fuer Technik Rapperswil
|
||||||
*
|
*
|
||||||
@@ -1127,6 +1127,22 @@ CALLBACK(parse_time, bool,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a relative time (32-bit)
|
||||||
|
*/
|
||||||
|
CALLBACK(parse_time32, bool,
|
||||||
|
uint32_t *out, chunk_t v)
|
||||||
|
{
|
||||||
|
uint64_t time;
|
||||||
|
|
||||||
|
if (parse_time(&time, v))
|
||||||
|
{
|
||||||
|
*out = time;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse byte volume
|
* Parse byte volume
|
||||||
*/
|
*/
|
||||||
@@ -1657,7 +1673,7 @@ CALLBACK(child_kv, bool,
|
|||||||
{ "start_action", parse_action, &child->cfg.start_action },
|
{ "start_action", parse_action, &child->cfg.start_action },
|
||||||
{ "close_action", parse_action, &child->cfg.close_action },
|
{ "close_action", parse_action, &child->cfg.close_action },
|
||||||
{ "ipcomp", parse_opt_ipcomp, &child->cfg.options },
|
{ "ipcomp", parse_opt_ipcomp, &child->cfg.options },
|
||||||
{ "inactivity", parse_time, &child->cfg.inactivity },
|
{ "inactivity", parse_time32, &child->cfg.inactivity },
|
||||||
{ "reqid", parse_uint32, &child->cfg.reqid },
|
{ "reqid", parse_uint32, &child->cfg.reqid },
|
||||||
{ "mark_in", parse_mark, &child->cfg.mark_in },
|
{ "mark_in", parse_mark, &child->cfg.mark_in },
|
||||||
{ "mark_in_sa", parse_opt_mark_in, &child->cfg.options },
|
{ "mark_in_sa", parse_opt_mark_in, &child->cfg.options },
|
||||||
|
|||||||
Reference in New Issue
Block a user