file_name = (const struct exfat_entry_name*) entry;
actual_checksum = exfat_add_checksum(entry, actual_checksum);
file_name = (const struct exfat_entry_name*) entry;
actual_checksum = exfat_add_checksum(entry, actual_checksum);
- memcpy(namep, file_name->name, EXFAT_ENAME_MAX * sizeof(le16_t));
+ memcpy(namep, file_name->name,
+ MIN(EXFAT_ENAME_MAX,
+ ((*node)->name + EXFAT_NAME_MAX - namep)) *
+ sizeof(le16_t));
namep += EXFAT_ENAME_MAX;
if (--continuations == 0)
{
namep += EXFAT_ENAME_MAX;
if (--continuations == 0)
{
{
struct exfat_entry_name name_entry = {EXFAT_ENTRY_FILE_NAME, 0};
memcpy(name_entry.name, node->name + i * EXFAT_ENAME_MAX,
{
struct exfat_entry_name name_entry = {EXFAT_ENTRY_FILE_NAME, 0};
memcpy(name_entry.name, node->name + i * EXFAT_ENAME_MAX,
- EXFAT_ENAME_MAX * sizeof(le16_t));
+ MIN(EXFAT_ENAME_MAX, EXFAT_NAME_MAX - i * EXFAT_ENAME_MAX) *
+ sizeof(le16_t));
next_entry(ef, dir, &cluster, &offset);
exfat_pwrite(ef->dev, &name_entry, sizeof(name_entry),
co2o(ef, cluster, offset));
next_entry(ef, dir, &cluster, &offset);
exfat_pwrite(ef->dev, &name_entry, sizeof(name_entry),
co2o(ef, cluster, offset));
{
struct exfat_entry_name name_entry = {EXFAT_ENTRY_FILE_NAME, 0};
memcpy(name_entry.name, name + i * EXFAT_ENAME_MAX,
{
struct exfat_entry_name name_entry = {EXFAT_ENTRY_FILE_NAME, 0};
memcpy(name_entry.name, name + i * EXFAT_ENAME_MAX,
- EXFAT_ENAME_MAX * sizeof(le16_t));
+ MIN(EXFAT_ENAME_MAX, EXFAT_NAME_MAX - i * EXFAT_ENAME_MAX) *
+ sizeof(le16_t));
checksum = exfat_add_checksum(&name_entry, checksum);
}
return cpu_to_le16(checksum);
checksum = exfat_add_checksum(&name_entry, checksum);
}
return cpu_to_le16(checksum);