diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2022-08-17 12:51:42 +0200 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2022-08-17 12:52:02 +0200 |
commit | ac2c78544fa60490f9506f4ea0cd7d74d2395b28 (patch) | |
tree | 2840a6995d36ede7bb767239e62a4be51a652e0b | |
parent | 8a23683a59835d967eff193bf1f82cc4ee5a6fdf (diff) | |
download | lvm2-ac2c78544fa60490f9506f4ea0cd7d74d2395b28.tar.gz |
config: check for possible mempool errors in _out_line_fn
-rw-r--r-- | lib/config/config.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/config/config.c b/lib/config/config.c index db8f3c2c1..230ec3225 100644 --- a/lib/config/config.c +++ b/lib/config/config.c @@ -1872,9 +1872,15 @@ static int _out_line_fn(const struct dm_config_node *cn, const char *line, void p = line + space_prefix_len; /* copy space_prefix, skip key and '=', copy value */ - dm_pool_begin_object(out->mem, len); - dm_pool_grow_object(out->mem, line, space_prefix_len); - dm_pool_grow_object(out->mem, p + strcspn(p, "=") + 1, len + 1); + if (!dm_pool_begin_object(out->mem, len)) + return_0; + + if (!dm_pool_grow_object(out->mem, line, space_prefix_len) || + !dm_pool_grow_object(out->mem, p + strcspn(p, "=") + 1, len + 1)) { + dm_pool_abandon_object(out->mem); + return_0; + } + line = dm_pool_end_object(out->mem); } else line = strchr(line, '=') + 1; |