OSDN Git Service
(root)
/
android-x86
/
external-exfat.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed buffer overflows when handling files names of exactly 256 UTF-16 characters...
[android-x86/external-exfat.git]
/
libexfat
/
utils.c
diff --git
a/libexfat/utils.c
b/libexfat/utils.c
index
3fd718a
..
8b6aaf9
100644
(file)
--- a/
libexfat/utils.c
+++ b/
libexfat/utils.c
@@
-85,7
+85,8
@@
le16_t exfat_calc_checksum(const struct exfat_entry_meta1* meta1,
{
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);