[#493] node/config: Fix corrupting of path to the subsection
In previous implementation `Config.Sub` method could lead to the violation of the internal `path` slice because of `append`. This has been observed on deeply nested subsections. Fix `Config.Sub` to copy internal slice in order to prevent violations. Cover problem case in test config files and unit test. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
72d81dba92
commit
e26dc0a6e3
4 changed files with 46 additions and 2 deletions
|
@ -8,9 +8,16 @@ import (
|
|||
//
|
||||
// Returns nil if subsection if missing.
|
||||
func (x *Config) Sub(name string) *Config {
|
||||
// copy path in order to prevent consequent violations
|
||||
ln := len(x.path)
|
||||
|
||||
path := make([]string, ln, ln+1)
|
||||
|
||||
copy(path, x.path)
|
||||
|
||||
return &Config{
|
||||
v: x.v,
|
||||
path: append(x.path, name),
|
||||
path: append(path, name),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue