goto out_error;
}
+ if (rd == buf_len) {
+ errmsg("contents of \"%s\" is too long", file);
+ errno = EINVAL;
+ goto out_error;
+ }
+
+ ((char *)buf)[rd] = '\0';
+
/* Make sure all data is read */
tmp1 = read(fd, &tmp, 1);
if (tmp1 == 1) {
if (fd == -1)
return -1;
- rd = read(fd, buf, 50);
+ rd = read(fd, buf, sizeof(buf));
if (rd == -1) {
sys_errmsg("cannot read \"%s\"", file);
goto out_error;
}
- if (rd == 50) {
+ if (rd == sizeof(buf)) {
errmsg("contents of \"%s\" is too long", file);
errno = EINVAL;
goto out_error;
}
+ buf[rd] = '\0';
if (sscanf(buf, "%llx\n", value) != 1) {
errmsg("cannot read integer from \"%s\"\n", file);
struct dirent *dirent;
struct libmtd *lib = (struct libmtd *)desc;
- memset(info, '\0', sizeof(struct mtd_info));
+ memset(info, 0, sizeof(struct mtd_info));
if (!lib->sysfs_supported)
return legacy_mtd_get_info(info);
struct stat st;
struct libmtd *lib = (struct libmtd *)desc;
- memset(mtd, '\0', sizeof(struct mtd_dev_info));
+ memset(mtd, 0, sizeof(struct mtd_dev_info));
mtd->dev_num = dev_num;
if (!lib->sysfs_supported)
return -1;
ret = dev_read_data(lib->mtd_name, dev_num, &mtd->name,
- MTD_NAME_MAX);
+ MTD_NAME_MAX + 1);
if (ret < 0)
return -1;
((char *)mtd->name)[ret - 1] = '\0';
ret = dev_read_data(lib->mtd_type, dev_num, &mtd->type_str,
- MTD_TYPE_MAX);
+ MTD_TYPE_MAX + 1);
if (ret < 0)
return -1;
((char *)mtd->type_str)[ret - 1] = '\0';
sys_errmsg("cannot read \"%s\"", file);
goto out_error;
}
+
+ if (rd == buf_len) {
+ errmsg("contents of \"%s\" is too long", file);
+ errno = EINVAL;
+ goto out_error;
+ }
+
((char *)buf)[rd] = '\0';
/* Make sure all data is read */
int fd, ret;
struct ubi_attach_req r;
- memset(&r, sizeof(struct ubi_attach_req), '\0');
+ memset(&r, 0, sizeof(struct ubi_attach_req));
desc = desc;
r.ubi_num = req->dev_num;
struct dirent *dirent;
struct libubi *lib = (struct libubi *)desc;
- memset(info, '\0', sizeof(struct ubi_info));
+ memset(info, 0, sizeof(struct ubi_info));
if (read_major(lib->ctrl_dev, &info->ctrl_major, &info->ctrl_minor)) {
/*
struct ubi_mkvol_req r;
size_t n;
- memset(&r, sizeof(struct ubi_mkvol_req), '\0');
+ memset(&r, 0, sizeof(struct ubi_mkvol_req));
desc = desc;
r.vol_id = req->vol_id;
struct dirent *dirent;
struct libubi *lib = (struct libubi *)desc;
- memset(info, '\0', sizeof(struct ubi_dev_info));
+ memset(info, 0, sizeof(struct ubi_dev_info));
info->dev_num = dev_num;
if (!dev_present(lib, dev_num))
struct libubi *lib = (struct libubi *)desc;
char buf[50];
- memset(info, '\0', sizeof(struct ubi_vol_info));
+ memset(info, 0, sizeof(struct ubi_vol_info));
info->dev_num = dev_num;
info->vol_id = vol_id;
return errmsg("too large alignment %d, max is %d (LEB size)",
vi->alignment, ui->leb_size);
- memset(vtbl_rec, '\0', sizeof(struct ubi_vtbl_record));
+ memset(vtbl_rec, 0, sizeof(struct ubi_vtbl_record));
tmp = (vi->bytes + ui->leb_size - 1) / ui->leb_size;
vtbl_rec->reserved_pebs = cpu_to_be32(tmp);
vtbl_rec->alignment = cpu_to_be32(vi->alignment);
{
uint32_t crc;
- memset(hdr, '\0', sizeof(struct ubi_ec_hdr));
+ memset(hdr, 0, sizeof(struct ubi_ec_hdr));
hdr->magic = cpu_to_be32(UBI_EC_HDR_MAGIC);
hdr->version = ui->ubi_ver;
{
uint32_t crc;
- memset(hdr, '\0', sizeof(struct ubi_vid_hdr));
+ memset(hdr, 0, sizeof(struct ubi_vid_hdr));
hdr->magic = cpu_to_be32(UBI_VID_HDR_MAGIC);
hdr->version = ui->ubi_ver;