---
kpartx/devmapper.c | 3 ++-
libmultipath/devmapper.c | 7 ++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
Index: multipath-tools-130222/kpartx/devmapper.c
===================================================================
--- multipath-tools-130222.orig/kpartx/devmapper.c
+++ multipath-tools-130222/kpartx/devmapper.c
@@ -330,7 +330,8 @@ dm_get_map(int major, int minor, char *
next = dm_get_next_target(dmt, next, &start, &length,
&target_type, ¶ms);
- if (snprintf(outparams, PARAMS_SIZE, "%s", params) <= PARAMS_SIZE)
+ if (params &&
+ snprintf(outparams, PARAMS_SIZE, "%s", params) <= PARAMS_SIZE)
r = 0;
out:
dm_task_destroy(dmt);
Index: multipath-tools-130222/libmultipath/devmapper.c
===================================================================
--- multipath-tools-130222.orig/libmultipath/devmapper.c
+++ multipath-tools-130222/libmultipath/devmapper.c
@@ -461,6 +461,8 @@ dm_get_map(const char * name, unsigned l
/* Fetch 1st target */
next = dm_get_next_target(dmt, next, &start, &length,
&target_type, ¶ms);
+ if (!params)
+ goto out;
if (size)
*size = length;
@@ -564,7 +566,8 @@ dm_get_status(char * name, char * outsta
next = dm_get_next_target(dmt, next, &start, &length,
&target_type, &status);
- if (snprintf(outstatus, PARAMS_SIZE, "%s", status) <= PARAMS_SIZE)
+ if (status &&
+ snprintf(outstatus, PARAMS_SIZE, "%s", status) <= PARAMS_SIZE)
r = 0;
out:
if (r)
@@ -1525,6 +1528,8 @@ int dm_reassign_table(const char *name,
do {
next = dm_get_next_target(dmt, next, &start, &length,
&target, ¶ms);
+ if (!params || !target)
+ continue;
memset(buff, 0, PARAMS_SIZE);
strcpy(buff, params);
if (strcmp(target, TGT_MPATH) && strstr(params, old)) {