diff options
author | Thomas Jarosch <thomas.jarosch@intra2net.com> | 2011-10-13 11:21:07 +0200 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-10-17 02:15:04 +0200 |
commit | 9cf014ec4055d95f32e028f1a004ea165d90ffe4 (patch) | |
tree | 2597622f1c17b2f2aeee3653459a9abc1768013f /policy.c | |
parent | imsm: fix: stopped resync does not continue after auto-assemblation (diff) | |
download | mdadm-9cf014ec4055d95f32e028f1a004ea165d90ffe4.tar.xz mdadm-9cf014ec4055d95f32e028f1a004ea165d90ffe4.zip |
Fix off-by-one in readlink() buffer size handling
readlink() returns the number of bytes in the buffer.
If we do something like
len = readlink(path, buf, sizeof(buf));
buf[len] = '\0';
we might write one byte past the end of the buffer.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'policy.c')
-rw-r--r-- | policy.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -222,7 +222,7 @@ static char *disk_path(struct mdinfo *disk) closedir(by_path); /* A NULL path isn't really acceptable - use the devname.. */ sprintf(symlink, "/sys/dev/block/%d:%d", disk->disk.major, disk->disk.minor); - rv = readlink(symlink, nm, sizeof(nm)); + rv = readlink(symlink, nm, sizeof(nm)-1); if (rv > 0) { char *dname; nm[rv] = 0; |