Check for mapname length
PATCH 1/1 Check for mapname length
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
Signature · 4 lines
Dr. Hannes Reinecke [email protected] 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 <[email protected]>
kpartx/devmapper.c +5 -2
@@ -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;
libmultipath/devmapper.c +5 -2
@@ -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: