[lvm-devel] master - libdm: better error reporting from dm_split_lvm_name
Zdenek Kabelac
zkabelac at fedoraproject.org
Mon Nov 16 12:14:23 UTC 2015
An embedded and charset-unspecified text was scrubbed...
Name: disclaimer.txt
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20151116/fa2ebe0e/attachment.txt>
-------------- next part --------------
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=2a2487f02fb2ddb72106f922dcbf0ddda6959b2f
Commit: 2a2487f02fb2ddb72106f922dcbf0ddda6959b2f
Parent: 5d4f5873a99c3ebe52e671f828580d4cd045e456
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Mon Nov 16 13:07:36 2015 +0100
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Nov 16 13:09:53 2015 +0100
libdm: better error reporting from dm_split_lvm_name
Report errors from all error paths correctly.
Validate passed args before dereferencing them.
---
libdm/libdm-string.c | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/libdm/libdm-string.c b/libdm/libdm-string.c
index 9132832..79a969c 100644
--- a/libdm/libdm-string.c
+++ b/libdm/libdm-string.c
@@ -95,13 +95,18 @@ static char *_unquote(char *component)
int dm_split_lvm_name(struct dm_pool *mem, const char *dmname,
char **vgname, char **lvname, char **layer)
{
- if (mem && !(*vgname = dm_pool_strdup(mem, dmname))) {
- log_error("Failed to duplicate dmname.");
+ if (!vgname || !lvname || !layer) {
+ log_error(INTERNAL_ERROR "dm_split_lvm_name: vgname, lvname nor layer could be NULL.");
return 0;
}
- if (!*vgname)
+ if (mem && (!dmname || !(*vgname = dm_pool_strdup(mem, dmname)))) {
+ log_error("Failed to duplicate lvm name.");
return 0;
+ } else if (!*vgname) {
+ log_error("Missing lvm name for split.");
+ return 0;
+ }
_unquote(*layer = _unquote(*lvname = _unquote(*vgname)));
More information about the lvm-devel
mailing list