summaryrefslogtreecommitdiffstats
path: root/fix_devt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'fix_devt.patch')
-rw-r--r--fix_devt.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/fix_devt.patch b/fix_devt.patch
new file mode 100644
index 0000000..26239a2
--- /dev/null
+++ b/fix_devt.patch
@@ -0,0 +1,25 @@
+Index: multipath-tools/libmultipath/discovery.c
+===================================================================
+--- multipath-tools.orig/libmultipath/discovery.c
++++ multipath-tools/libmultipath/discovery.c
+@@ -252,7 +252,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;
+ }
+ }
+@@ -270,6 +274,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;
+ }
+