From: Benjamin Marzinski Date: Thu, 11 Dec 2008 22:11:40 +0000 (-0600) Subject: Fix broken major:minor device handling X-Git-Tag: 0.4.9~158 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=069ad413c7d12c5b95acd3492b0ad352f7edf7eb;p=platform%2Fupstream%2Fmultipath-tools.git Fix broken major:minor device handling devt2devname was not actually setting devname, so multipath was not able to do operate on devices using major:minor This patch sets devname, and also checks for an unlikely buffer overrun. Signed-off-by: Benjamin Marzinski --- diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c index bbb9f9b..9ae2b8f 100644 --- a/libmultipath/discovery.c +++ b/libmultipath/discovery.c @@ -253,7 +253,11 @@ devt2devname (char *devname, char *devt) continue; if ((major == tmpmaj) && (minor == tmpmin)) { - sprintf(block_path, "/sys/block/%s", dev); + if (snprintf(block_path, FILE_NAME_SIZE, "/sys/block/%s", dev) >= FILE_NAME_SIZE) { + condlog(0, "device name %s is too long\n", dev); + fclose(fd); + return 1; + } break; } } @@ -271,6 +275,7 @@ devt2devname (char *devname, char *devt) condlog(0, "sysfs entry %s is not a directory\n", block_path); return 1; } + basename(block_path, devname); return 0; }