Loading fs/ntfs3/xattr.c +13 −12 Original line number Diff line number Diff line Loading @@ -195,10 +195,8 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer, { const struct EA_INFO *info; struct EA_FULL *ea_all = NULL; const struct EA_FULL *ea; u32 off, size; int err; int ea_size; size_t ret; err = ntfs_read_ea(ni, &ea_all, 0, &info); Loading @@ -212,16 +210,18 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer, /* Enumerate all xattrs. */ ret = 0; for (off = 0; off + sizeof(struct EA_FULL) < size; off += ea_size) { ea = Add2Ptr(ea_all, off); ea_size = unpacked_ea_size(ea); off = 0; while (off + sizeof(struct EA_FULL) < size) { const struct EA_FULL *ea = Add2Ptr(ea_all, off); int ea_size = unpacked_ea_size(ea); u8 name_len = ea->name_len; if (!ea->name_len) if (!name_len) break; if (ea->name_len > ea_size) { if (name_len > ea_size) { ntfs_set_state(ni->mi.sbi, NTFS_DIRTY_ERROR); err = -EINVAL; /* corrupted fs */ err = -EINVAL; /* corrupted fs. */ break; } Loading @@ -230,16 +230,17 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer, if (off + ea_size > size) break; if (ret + ea->name_len + 1 > bytes_per_buffer) { if (ret + name_len + 1 > bytes_per_buffer) { err = -ERANGE; goto out; } memcpy(buffer + ret, ea->name, ea->name_len); buffer[ret + ea->name_len] = 0; memcpy(buffer + ret, ea->name, name_len); buffer[ret + name_len] = 0; } ret += ea->name_len + 1; ret += name_len + 1; off += ea_size; } out: Loading Loading
fs/ntfs3/xattr.c +13 −12 Original line number Diff line number Diff line Loading @@ -195,10 +195,8 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer, { const struct EA_INFO *info; struct EA_FULL *ea_all = NULL; const struct EA_FULL *ea; u32 off, size; int err; int ea_size; size_t ret; err = ntfs_read_ea(ni, &ea_all, 0, &info); Loading @@ -212,16 +210,18 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer, /* Enumerate all xattrs. */ ret = 0; for (off = 0; off + sizeof(struct EA_FULL) < size; off += ea_size) { ea = Add2Ptr(ea_all, off); ea_size = unpacked_ea_size(ea); off = 0; while (off + sizeof(struct EA_FULL) < size) { const struct EA_FULL *ea = Add2Ptr(ea_all, off); int ea_size = unpacked_ea_size(ea); u8 name_len = ea->name_len; if (!ea->name_len) if (!name_len) break; if (ea->name_len > ea_size) { if (name_len > ea_size) { ntfs_set_state(ni->mi.sbi, NTFS_DIRTY_ERROR); err = -EINVAL; /* corrupted fs */ err = -EINVAL; /* corrupted fs. */ break; } Loading @@ -230,16 +230,17 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer, if (off + ea_size > size) break; if (ret + ea->name_len + 1 > bytes_per_buffer) { if (ret + name_len + 1 > bytes_per_buffer) { err = -ERANGE; goto out; } memcpy(buffer + ret, ea->name, ea->name_len); buffer[ret + ea->name_len] = 0; memcpy(buffer + ret, ea->name, name_len); buffer[ret + name_len] = 0; } ret += ea->name_len + 1; ret += name_len + 1; off += ea_size; } out: Loading