device-mapper-multipath-0.8.7-7
Add 0035-libmultipath-use-asprintf-to-allocate-prefixed_uuid.patch Resolves: bz #2045309
This commit is contained in:
parent
06885ec9cc
commit
3121417f06
@ -0,0 +1,59 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Tue, 25 Jan 2022 23:02:33 -0600
|
||||
Subject: [PATCH] libmultipath: use asprintf() to allocate prefixed_uuid
|
||||
|
||||
gcc 12.0.1 failed building libmultipath due to a format-overflow false
|
||||
positive on 32-bit architectures. This isn't so surprising as
|
||||
format-overflow=2 is very aggressive in the assumptions it makes about
|
||||
the arguments. Here, it assumes that mpp->wwid could take up all the
|
||||
space that a pointer could point to, even if I add code to this function
|
||||
to explicitly null terminate mpp->wwid to fit in WWID_SIZE.
|
||||
|
||||
To avoid this and simplify the function, switch from using calloc() and
|
||||
sprintf() to just using asprintf().
|
||||
|
||||
For reference, the gcc build error that this fixes is:
|
||||
|
||||
devmapper.c: In function 'dm_addmap.constprop.0':
|
||||
devmapper.h:27:21: error: '%s' directive writing up to 2147483644 bytes into a region of size 2147483641 [-Werror=format-overflow=]
|
||||
27 | #define UUID_PREFIX "mpath-"
|
||||
| ^~~~~~~~
|
||||
devmapper.c:484:53: note: format string is defined here
|
||||
484 | sprintf(prefixed_uuid, UUID_PREFIX "%s", mpp->wwid);
|
||||
| ^~
|
||||
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmultipath/devmapper.c | 7 ++-----
|
||||
1 file changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
|
||||
index c05dc201..bae07125 100644
|
||||
--- a/libmultipath/devmapper.c
|
||||
+++ b/libmultipath/devmapper.c
|
||||
@@ -474,14 +474,11 @@ dm_addmap (int task, const char *target, struct multipath *mpp,
|
||||
dm_task_set_ro(dmt);
|
||||
|
||||
if (task == DM_DEVICE_CREATE) {
|
||||
- prefixed_uuid = MALLOC(UUID_PREFIX_LEN +
|
||||
- strlen(mpp->wwid) + 1);
|
||||
- if (!prefixed_uuid) {
|
||||
+ if (asprintf(&prefixed_uuid, UUID_PREFIX "%s", mpp->wwid) < 0) {
|
||||
condlog(0, "cannot create prefixed uuid : %s",
|
||||
strerror(errno));
|
||||
goto addout;
|
||||
}
|
||||
- sprintf(prefixed_uuid, UUID_PREFIX "%s", mpp->wwid);
|
||||
if (!dm_task_set_uuid(dmt, prefixed_uuid))
|
||||
goto freeout;
|
||||
dm_task_skip_lockfs(dmt);
|
||||
@@ -517,7 +514,7 @@ dm_addmap (int task, const char *target, struct multipath *mpp,
|
||||
libmp_udev_wait(cookie);
|
||||
freeout:
|
||||
if (prefixed_uuid)
|
||||
- FREE(prefixed_uuid);
|
||||
+ free(prefixed_uuid);
|
||||
|
||||
addout:
|
||||
dm_task_destroy (dmt);
|
@ -1,6 +1,6 @@
|
||||
Name: device-mapper-multipath
|
||||
Version: 0.8.7
|
||||
Release: 6%{?dist}
|
||||
Release: 7%{?dist}
|
||||
Summary: Tools to manage multipath devices using device-mapper
|
||||
License: GPLv2
|
||||
URL: http://christophe.varoqui.free.fr/
|
||||
@ -44,6 +44,7 @@ Patch0031: 0031-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
|
||||
Patch0032: 0032-RH-reset-default-find_mutipaths-value-to-off.patch
|
||||
Patch0033: 0033-RH-attempt-to-get-ANA-info-via-sysfs-first.patch
|
||||
Patch0034: 0034-RH-make-parse_vpd_pg83-match-scsi_id-output.patch
|
||||
Patch0035: 0035-libmultipath-use-asprintf-to-allocate-prefixed_uuid.patch
|
||||
|
||||
# runtime
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
@ -241,6 +242,10 @@ fi
|
||||
%{_pkgconfdir}/libdmmp.pc
|
||||
|
||||
%changelog
|
||||
* Wed Jan 26 2022 Benjamin Marzinski <bmarzins@redhat.com> - 0.8.7-7
|
||||
- Add 0035-libmultipath-use-asprintf-to-allocate-prefixed_uuid.patch
|
||||
- Resolves: bz #2045309
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.7-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user