path: root/fs/exofs/super.c
diff options
authorDan Carpenter <dan.carpenter@oracle.com>2012-01-30 10:59:49 +0300
committerBoaz Harrosh <bharrosh@panasas.com>2012-03-19 13:39:12 -0700
commit72749a270b6d254b4a018e290b853c27edb2fa62 (patch)
treecde350c359d5dc7328e6a96f867ca6d671b4bde8 /fs/exofs/super.c
parent3e57638bb1469ba2705456e9fd4063d1890341e1 (diff)
exofs: Cap on the memcpy() size
This data comes from the device, so probably it's fairly trustworthy but it makes the static checkers happy if we check it. [Boaz] the system_id_len is zero, if not present, or always OSD_SYSTEMID_LEN. So always copy OSD_SYSTEMID_LEN bytes. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Diffstat (limited to 'fs/exofs/super.c')
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/exofs/super.c b/fs/exofs/super.c
index d9619a57780..6c5397ad7a2 100644
--- a/fs/exofs/super.c
+++ b/fs/exofs/super.c
@@ -529,7 +529,8 @@ static int exofs_devs_2_odi(struct exofs_dt_device_info *dt_dev,
struct osd_dev_info *odi)
odi->systemid_len = le32_to_cpu(dt_dev->systemid_len);
- memcpy(odi->systemid, dt_dev->systemid, odi->systemid_len);
+ if (likely(odi->systemid_len))
+ memcpy(odi->systemid, dt_dev->systemid, OSD_SYSTEMID_LEN);
odi->osdname_len = le32_to_cpu(dt_dev->osdname_len);
odi->osdname = dt_dev->osdname;