From 7364918895b6b014d1a675c38973845cdf3baf41 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Fri, 18 Jul 2008 16:37:16 +1000 Subject: [PATCH] Correct readlink usage in sysfs.c readlink doesn't nul-terminate the returned string, so we must be sure to do that. Signed-off-by: Neil Brown --- sysfs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sysfs.c b/sysfs.c index 847a4e1e..bc021cc7 100644 --- a/sysfs.c +++ b/sysfs.c @@ -374,14 +374,16 @@ int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd) memset(nm, 0, sizeof(nm)); sprintf(dv, "/sys/dev/block/%d:%d", sd->disk.major, sd->disk.minor); - if (readlink(dv, nm, sizeof(nm)) < 0) + rv = readlink(dv, nm, sizeof(nm)); + if (rv <= 0) return -1; + nm[rv] = '\0'; dname = strrchr(nm, '/'); if (dname) dname++; strcpy(sd->sys_name, "dev-"); strcpy(sd->sys_name+4, dname); - rv |= sysfs_set_num(sra, sd, "offset", sd->data_offset); + rv = sysfs_set_num(sra, sd, "offset", sd->data_offset); rv |= sysfs_set_num(sra, sd, "size", (sd->component_size+1) / 2); if (sra->array.level != LEVEL_CONTAINER) { rv |= sysfs_set_num(sra, sd, "slot", sd->disk.raid_disk); -- 2.39.2