|
 |
2c1b57 |
From 75dd32a185871fead13cd3586e00980b35410ff0 Mon Sep 17 00:00:00 2001
|
|
 |
2c1b57 |
From: Zhilong Liu <zlliu@suse.com>
|
|
 |
2c1b57 |
Date: Mon, 20 Mar 2017 13:21:41 +0800
|
|
 |
2c1b57 |
Subject: [RHEL7.5 PATCH 014/169] mdadm/Monitor: Fix NULL pointer
|
|
 |
2c1b57 |
dereference when stat2devnm return NULL
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
Wait(): stat2devnm() returns NULL for non block devices. Check the
|
|
 |
2c1b57 |
pointer is valid derefencing it. This can happen when using --wait,
|
|
 |
2c1b57 |
such as the 'f' and 'd' file type, causing a core dump.
|
|
 |
2c1b57 |
such as: ./mdadm --wait /dev/md/
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
Reviewed-by: NeilBrown <neilb@suse.com>
|
|
 |
2c1b57 |
Signed-off-by: Zhilong Liu <zlliu@suse.com>
|
|
 |
2c1b57 |
Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
|
|
 |
2c1b57 |
---
|
|
 |
2c1b57 |
Monitor.c | 8 +++++++-
|
|
 |
2c1b57 |
1 file changed, 7 insertions(+), 1 deletion(-)
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
diff --git a/Monitor.c b/Monitor.c
|
|
 |
2c1b57 |
index 802a9d9..bdd3e63 100644
|
|
 |
2c1b57 |
--- a/Monitor.c
|
|
 |
2c1b57 |
+++ b/Monitor.c
|
|
 |
2c1b57 |
@@ -994,6 +994,7 @@ int Wait(char *dev)
|
|
 |
2c1b57 |
{
|
|
 |
2c1b57 |
struct stat stb;
|
|
 |
2c1b57 |
char devnm[32];
|
|
 |
2c1b57 |
+ char *tmp;
|
|
 |
2c1b57 |
int rv = 1;
|
|
 |
2c1b57 |
int frozen_remaining = 3;
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
@@ -1002,7 +1003,12 @@ int Wait(char *dev)
|
|
 |
2c1b57 |
strerror(errno));
|
|
 |
2c1b57 |
return 2;
|
|
 |
2c1b57 |
}
|
|
 |
2c1b57 |
- strcpy(devnm, stat2devnm(&stb));
|
|
 |
2c1b57 |
+ tmp = stat2devnm(&stb;;
|
|
 |
2c1b57 |
+ if (!tmp) {
|
|
 |
2c1b57 |
+ pr_err("%s is not a block device.\n", dev);
|
|
 |
2c1b57 |
+ return 2;
|
|
 |
2c1b57 |
+ }
|
|
 |
2c1b57 |
+ strcpy(devnm, tmp);
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
while(1) {
|
|
 |
2c1b57 |
struct mdstat_ent *ms = mdstat_read(1, 0);
|
|
 |
2c1b57 |
--
|
|
 |
2c1b57 |
2.7.4
|
|
 |
2c1b57 |
|