summaryrefslogtreecommitdiff
path: root/policy.c
diff options
context:
space:
mode:
authorThomas Jarosch <thomas.jarosch@intra2net.com>2011-10-13 11:21:07 +0200
committerNeilBrown <neilb@suse.de>2011-10-17 11:15:04 +1100
commit9cf014ec4055d95f32e028f1a004ea165d90ffe4 (patch)
tree2597622f1c17b2f2aeee3653459a9abc1768013f /policy.c
parentb601104eb4a4733a838fb86e9e279fed14ce9d3f (diff)
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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/policy.c b/policy.c
index ef483537..7959c970 100644
--- a/policy.c
+++ b/policy.c
@@ -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;