From c8e3386158a9b4e0cf425be4d244b23ea68e66910c0c8ae1ea3916467cd0dfc2 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Tue, 12 Feb 2019 22:07:40 +0000 Subject: [PATCH] Accepting request 673560 from home:colyli:branches:Base:System - Detail.c: do not skip first character when calling xstrdup in Detail() (bsc#1123814) 0009-Detail.c-do-not-skip-first-character-when-calling-xs.patch OBS-URL: https://build.opensuse.org/request/show/673560 OBS-URL: https://build.opensuse.org/package/show/Base:System/mdadm?expand=0&rev=173 --- ...skip-first-character-when-calling-xs.patch | 47 +++++++++++++++++++ mdadm.changes | 7 +++ mdadm.spec | 4 +- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 0009-Detail.c-do-not-skip-first-character-when-calling-xs.patch diff --git a/0009-Detail.c-do-not-skip-first-character-when-calling-xs.patch b/0009-Detail.c-do-not-skip-first-character-when-calling-xs.patch new file mode 100644 index 0000000..70554e6 --- /dev/null +++ b/0009-Detail.c-do-not-skip-first-character-when-calling-xs.patch @@ -0,0 +1,47 @@ +From 02acb5718a68b16def418699c6afcc84223f52c7 Mon Sep 17 00:00:00 2001 +From: Coly Li +Date: Tue, 12 Feb 2019 12:43:40 +0800 +Subject: [PATCH] Detail.c: do not skip first character when calling xstrdup in + Detail() +Git-commit: Posted but not upstreamed yet +References: bsc#1123814 + +'Commit b9c9bd9bacaa ("Detail: ensure --export names are acceptable as +shell variables")' duplicates mdi->sys_name to sysdev string by, + char *sysdev = xstrdup(mdi->sys_name + 1); +which skips the first character of mdi->sys_name. Then when running +mdadm --detail --export, the output looks like, + MD_DEVICE_ev_sda2_ROLE=1 + MD_DEVICE_ev_sda2_DEV=/dev/sda2 +The first character of md device (between MD_DEVICE and _ROLE/_DEV) +is dropped. The expected output should be, + MD_DEVICE_dev_sda2_ROLE=1 + MD_DEVICE_dev_sda2_DEV=/dev/sda2 + +This patch removes the '+ 1' from calling xstrdup() in Detail(), which +gets the dropped first character back. + +Reported-by: Arvin Schnell +Fixes: b9c9bd9bacaa ("Detail: ensure --export names are acceptable as 4 shell variables") +Signed-off-by: Coly Li +Cc: NeilBrown +--- + Detail.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Detail.c b/Detail.c +index b3e857a..20ea03a 100644 +--- a/Detail.c ++++ b/Detail.c +@@ -284,7 +284,7 @@ int Detail(char *dev, struct context *c) + struct mdinfo *mdi; + for (mdi = sra->devs; mdi; mdi = mdi->next) { + char *path; +- char *sysdev = xstrdup(mdi->sys_name + 1); ++ char *sysdev = xstrdup(mdi->sys_name); + char *cp; + + path = map_dev(mdi->disk.major, +-- +2.16.4 + diff --git a/mdadm.changes b/mdadm.changes index b38a5d7..eaba98b 100644 --- a/mdadm.changes +++ b/mdadm.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Feb 12 06:21:48 UTC 2019 - colyli@suse.com + +- Detail.c: do not skip first character when calling xstrdup in + Detail() (bsc#1123814) + 0009-Detail.c-do-not-skip-first-character-when-calling-xs.patch + ------------------------------------------------------------------- Tue Dec 11 13:52:25 UTC 2018 - Jan Engelhardt diff --git a/mdadm.spec b/mdadm.spec index 286c66e..fb22de1 100644 --- a/mdadm.spec +++ b/mdadm.spec @@ -1,7 +1,7 @@ # # spec file for package mdadm # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -50,6 +50,7 @@ Patch15: 0005-imsm-update-metadata-correctly-while-raid10-double-d.patch Patch16: 0006-Grow-avoid-overflow-in-compute_backup_blocks.patch Patch17: 0007-Grow-report-correct-new-chunk-size.patch Patch18: 0008-policy.c-prevent-NULL-pointer-referencing.patch +Patch19: 0009-Detail.c-do-not-skip-first-character-when-calling-xs.patch Patch1001: 1001-display-timeout-status.patch %define _udevdir %(pkg-config --variable=udevdir udev) %define _systemdshutdowndir %{_unitdir}/../system-shutdown @@ -68,6 +69,7 @@ mdadm is a program that can be used to control Linux md devices. %patch16 -p1 %patch17 -p1 %patch18 -p1 +%patch19 -p1 %patch1001 -p1 %build