summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2014-09-11 09:30:03 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2014-09-11 09:30:03 +0200
commit80ac8f37d6ac5f8c5228678d4ee07187b5d4db7b (patch)
treef2b56b5782c7f8b52bfd5801a1a2bf700397b3c2
parent4748f4a9e4516a8c9226ce61b5a3ca41f0852ffc (diff)
downloadlvm2-80ac8f37d6ac5f8c5228678d4ee07187b5d4db7b.tar.gz
filters: fix incorrect filter indexing in composite filter array
Caused by recent changes - a7be3b12dfe7388d1648595e6cc4c7a1379bb8a7. If global filter was not defined, then part of the code creating composite filter (the cmd->lvmetad_filter) incorrectly increased index value even if this global filter was not created as part of the composite filter. This caused a gap with "NULL" value in the composite filter array which ended up with the rest of the filters after the gap to be ignored and also it caused a mem leak when destroying the composite filter.
-rw-r--r--lib/commands/toolcontext.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 5bf5cbff1..c3afae4d4 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -861,12 +861,13 @@ static struct dev_filter *_init_filter_components(struct cmd_context *cmd)
}
/* regex filter. Optional. */
- if ((cn = find_config_tree_node(cmd, devices_global_filter_CFG, NULL)) &&
- !(filters[nr_filt] = regex_filter_create(cn->v))) {
- log_error("Failed to create global regex device filter");
- goto bad;
- } else
+ if ((cn = find_config_tree_node(cmd, devices_global_filter_CFG, NULL))) {
+ if (!(filters[nr_filt] = regex_filter_create(cn->v))) {
+ log_error("Failed to create global regex device filter");
+ goto bad;
+ }
nr_filt++;
+ }
/* device type filter. Required. */
if (!(filters[nr_filt] = lvm_type_filter_create(cmd->dev_types))) {