From: Thomas Jarosch Date: Thu, 13 Oct 2011 09:22:13 +0000 (+0200) Subject: Fix unterminated buffer after readlink() call X-Git-Tag: mdadm-3.2.3~129 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fca13185fc23760503a91e7f881286375e71ce4c;p=thirdparty%2Fmdadm.git Fix unterminated buffer after readlink() call Signed-off-by: Thomas Jarosch Signed-off-by: NeilBrown --- diff --git a/mdopen.c b/mdopen.c index 0a174211..555ab84f 100644 --- a/mdopen.c +++ b/mdopen.c @@ -360,8 +360,12 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy, if (lstat(chosen, &stb) == 0) { char buf[300]; + ssize_t link_len = readlink(chosen, buf, sizeof(buf)-1); + if (link_len >= 0) + buf[link_len] = '\0'; + if ((stb.st_mode & S_IFMT) != S_IFLNK || - readlink(chosen, buf, 300) <0 || + link_len < 0 || strcmp(buf, devname) != 0) { fprintf(stderr, Name ": %s exists - ignoring\n", chosen);