summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2012-03-12 14:15:04 +0000
committerZdenek Kabelac <zkabelac@redhat.com>2012-03-12 14:15:04 +0000
commitf6632c1ef42dfb4d16205fe59b9b501b6fb0ce33 (patch)
tree0f7d52e93be90929835dbeb4005ec1f85ee39f8a /tools
parent2c2bb4a4587d1ef84171babdfae3ca4986e2c009 (diff)
downloadlvm2-f6632c1ef42dfb4d16205fe59b9b501b6fb0ce33.tar.gz
lvm2-f6632c1ef42dfb4d16205fe59b9b501b6fb0ce33.tar.xz
lvm2-f6632c1ef42dfb4d16205fe59b9b501b6fb0ce33.zip
Fix error path for create_toolcontext
Never return unfinished toolcontext - since error path is hit on various stages of initialization we cannot leave it partially uninitialized, since we would need to spread many more test across the code for config_valid. Instead return NULL and properly release udev library resources as well.
Diffstat (limited to 'tools')
-rw-r--r--tools/lvmcmdline.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index 6efd0824..48c65015 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -1248,13 +1248,16 @@ struct cmd_context *init_lvm(void)
if (!udev_init_library_context())
stack;
- if (!(cmd = create_toolcontext(0, NULL, 1, 0)))
+ if (!(cmd = create_toolcontext(0, NULL, 1, 0))) {
+ udev_fin_library_context();
return_NULL;
+ }
_cmdline.arg_props = &_arg_props[0];
if (stored_errno()) {
destroy_toolcontext(cmd);
+ udev_fin_library_context();
return_NULL;
}