]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
mdopen: fix gcc 8.1 string overflow error
authorJes Sorensen <jsorensen@fb.com>
Thu, 31 May 2018 17:11:21 +0000 (13:11 -0400)
committerJes Sorensen <jsorensen@fb.com>
Thu, 31 May 2018 17:11:21 +0000 (13:11 -0400)
We already cut symlinks longer than 1000, so rely on this calling
readlink and error out if we are able to read more than 1000 bytes.

Signed-off-by: Jes Sorensen <jsorensen@fb.com>
mdopen.c

index 4ec13f5eb5979a66234976115e1d466f7e005d76..98c54e433a5df1986af0e12dadb996b0f4f0836b 100644 (file)
--- a/mdopen.c
+++ b/mdopen.c
@@ -44,7 +44,7 @@ void make_parts(char *dev, int cnt)
        int nlen = strlen(dev) + 20;
        char *name;
        int dig = isdigit(dev[strlen(dev)-1]);
-       char orig[1024];
+       char orig[1001];
        char sym[1024];
        int err;
 
@@ -58,8 +58,10 @@ void make_parts(char *dev, int cnt)
                minor_num = minor(stb.st_rdev);
                odig = -1;
        } else if (S_ISLNK(stb.st_mode)) {
-               int len = readlink(dev, orig, sizeof(orig));
-               if (len < 0 || len > 1000)
+               int len;
+
+               len = readlink(dev, orig, sizeof(orig));
+               if (len < 0 || len >= (int)sizeof(orig))
                        return;
                orig[len] = 0;
                odig = isdigit(orig[len-1]);