|
Coly Li |
7a0a64 |
From f68334a85ee9120678c06a8da4a1711be7be86a2 Mon Sep 17 00:00:00 2001
|
|
Coly Li |
7a0a64 |
From: Takashi Iwai <tiwai@suse.de>
|
|
Coly Li |
7a0a64 |
Date: Tue, 18 Feb 2020 09:22:08 +0100
|
|
Coly Li |
7a0a64 |
Subject: [PATCH] md/raid0: Fix buffer overflow at debug print
|
|
Coly Li |
7a0a64 |
Patch-mainline: Not yet, waiting for patch author posting upstream
|
|
Coly Li |
7a0a64 |
References: bsc#1164051
|
|
Coly Li |
7a0a64 |
|
|
Coly Li |
7a0a64 |
The debug print text in dump_zones() is formatted via a loop of
|
|
Coly Li |
7a0a64 |
snprintf(). Since snprintf() returns the number of would-be-printed
|
|
Coly Li |
7a0a64 |
characters, not the actually output, the length calculation in the
|
|
Coly Li |
7a0a64 |
loop overflows the actual buffer size, which leads to a WARNING in
|
|
Coly Li |
7a0a64 |
vsnprintf().
|
|
Coly Li |
7a0a64 |
|
|
Coly Li |
7a0a64 |
Replace snprintf() with scnprintf() to calculate properly with the
|
|
Coly Li |
7a0a64 |
actual output size.
|
|
Coly Li |
7a0a64 |
|
|
Coly Li |
7a0a64 |
Cc: <stable@vger.kernel.org>
|
|
Coly Li |
7a0a64 |
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
Coly Li |
7a0a64 |
Signed-off-by: Coly Li <colyli@suse.de>
|
|
Coly Li |
7a0a64 |
---
|
|
Coly Li |
7a0a64 |
drivers/md/raid0.c | 2 +-
|
|
Coly Li |
7a0a64 |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
Coly Li |
7a0a64 |
|
|
Coly Li |
7a0a64 |
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
|
|
Coly Li |
7a0a64 |
index 322386ff5d22..3e16be05b98f 100644
|
|
Coly Li |
7a0a64 |
--- a/drivers/md/raid0.c
|
|
Coly Li |
7a0a64 |
+++ b/drivers/md/raid0.c
|
|
Coly Li |
7a0a64 |
@@ -63,7 +63,7 @@ static void dump_zones(struct mddev *mddev)
|
|
Coly Li |
7a0a64 |
int len = 0;
|
|
Coly Li |
7a0a64 |
|
|
Coly Li |
7a0a64 |
for (k = 0; k < conf->strip_zone[j].nb_dev; k++)
|
|
Coly Li |
7a0a64 |
- len += snprintf(line+len, 200-len, "%s%s", k?"/":"",
|
|
Coly Li |
7a0a64 |
+ len += scnprintf(line+len, 200-len, "%s%s", k?"/":"",
|
|
Coly Li |
7a0a64 |
bdevname(conf->devlist[j*raid_disks
|
|
Coly Li |
7a0a64 |
+ k]->bdev, b));
|
|
Coly Li |
7a0a64 |
pr_debug("md: zone%d=[%s]\n", j, line);
|
|
Coly Li |
7a0a64 |
--
|
|
Coly Li |
7a0a64 |
2.16.4
|
|
Coly Li |
7a0a64 |
|