From ff9239ee3177630d62c7a58408992af7a779763c Mon Sep 17 00:00:00 2001 From: Xiao Ni Date: Fri, 17 Mar 2017 19:55:43 +0800 Subject: [PATCH] mdadm: Specify enough length when write to buffer MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In Detail.c the buffer path in function Detail is defined as path[200], in fact the max lenth of content which needs to write to the buffer is 287. Because the length of dname of struct dirent is 255. During building it reports error: error: ‘%s’ directive writing up to 255 bytes into a region of size 189 [-Werror=format-overflow=] In function examine_super0 there is a buffer nb with length 5. But it need to show a int type argument. The lenght of max number of int is 10. So the buffer length should be 11. In human_size function the length of buf is 30. During building there is a error: output between 20 and 47 bytes into a destination of size 30. Change the length to 47. Signed-off-by: Xiao Ni Signed-off-by: Jes Sorensen --- Detail.c | 2 +- super0.c | 2 +- util.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Detail.c b/Detail.c index 509b0d41..cb337947 100644 --- a/Detail.c +++ b/Detail.c @@ -575,7 +575,7 @@ This is pretty boring printf(" Member Arrays :"); while (dir && (de = readdir(dir)) != NULL) { - char path[200]; + char path[287]; char vbuf[1024]; int nlen = strlen(sra->sys_name); dev_t devid; diff --git a/super0.c b/super0.c index 938cfd95..f5b4507b 100644 --- a/super0.c +++ b/super0.c @@ -231,7 +231,7 @@ static void examine_super0(struct supertype *st, char *homehost) d++) { mdp_disk_t *dp; char *dv; - char nb[5]; + char nb[11]; int wonly, failfast; if (d>=0) dp = &sb->disks[d]; else dp = &sb->this_disk; diff --git a/util.c b/util.c index f1009723..32bd909b 100644 --- a/util.c +++ b/util.c @@ -811,7 +811,7 @@ unsigned long calc_csum(void *super, int bytes) #ifndef MDASSEMBLE char *human_size(long long bytes) { - static char buf[30]; + static char buf[47]; /* We convert bytes to either centi-M{ega,ibi}bytes or * centi-G{igi,ibi}bytes, with appropriate rounding, -- 2.39.2