[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] [PATCH] Check for mapname length
- From: Hannes Reinecke <hare suse de>
- To: christophe varoqui <christophe varoqui free fr>
- Cc: device-mapper development <dm-devel redhat com>
- Subject: [dm-devel] [PATCH] Check for mapname length
- Date: Fri, 09 Dec 2005 12:43:59 +0100
Hi Christophe,
you asked for it:
This patch checks whether the mapname returned by dm_task_get_name is
not zero-sized. So NULL is returned always for an invalid mapname.
Cheers,
Hannes
--
Dr. Hannes Reinecke hare suse de
SuSE Linux Products GmbH S390 & zSeries
Maxfeldstraße 5 +49 911 74053 688
90409 Nürnberg http://www.suse.de
[devmapper] Check mapname length
dm_task_get_name might return a zero-length string, which also
seem to indicate an invalid mapname. Fix dm_mapname() to always
return NULL if either no mapname or an zero-length mapname
was returned.
Signed-off-by: Hannes Reinecke <hare suse de>
diff --git a/kpartx/devmapper.c b/kpartx/devmapper.c
--- a/kpartx/devmapper.c
+++ b/kpartx/devmapper.c
@@ -123,7 +123,7 @@ const char *
dm_mapname(int major, int minor)
{
struct dm_task *dmt;
- const char *mapname;
+ const char *mapname = NULL, *map;
if (!(dmt = dm_task_create(DM_DEVICE_INFO)))
return NULL;
@@ -135,7 +135,10 @@ dm_mapname(int major, int minor)
if (!dm_task_run(dmt))
goto out;
- mapname = strdup(dm_task_get_name(dmt));
+ map = dm_task_get_name(dmt);
+ if (map && strlen(map))
+ mapname = strdup(map);
+
out:
dm_task_destroy(dmt);
return mapname;
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -675,7 +675,7 @@ out:
char *
dm_mapname(int major, int minor)
{
- char * response;
+ char * response = NULL, *map;
struct dm_task *dmt;
int r;
int loop = MAX_WAIT * LOOPS_PER_SEC;
@@ -709,7 +709,10 @@ dm_mapname(int major, int minor)
goto bad;
}
- response = STRDUP((char *)dm_task_get_name(dmt));
+ map = dm_task_get_name(dmt);
+ if (map && strlen(map))
+ response = STRDUP((char *)dm_task_get_name(dmt));
+
dm_task_destroy(dmt);
return response;
bad:
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]