diff options
author | Xiao Ni <xni@redhat.com> | 2017-03-17 12:55:43 +0100 |
---|---|---|
committer | Jes Sorensen <Jes.Sorensen@gmail.com> | 2017-03-17 20:58:16 +0100 |
commit | ff9239ee3177630d62c7a58408992af7a779763c (patch) | |
tree | dec7c058c0aca98e59d9a1a111b02600a9baa129 | |
parent | mdadm: Add Wimplicit-fallthrough=0 in Makefile (diff) | |
download | mdadm-ff9239ee3177630d62c7a58408992af7a779763c.tar.xz mdadm-ff9239ee3177630d62c7a58408992af7a779763c.zip |
mdadm: Specify enough length when write to buffer
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 <xni@redhat.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
-rw-r--r-- | Detail.c | 2 | ||||
-rw-r--r-- | super0.c | 2 | ||||
-rw-r--r-- | util.c | 2 |
3 files changed, 3 insertions, 3 deletions
@@ -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; @@ -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; @@ -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, |