summaryrefslogtreecommitdiffstats
path: root/firmware/common/file_internal.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2017-03-12 20:59:44 -0400
committerMichael Sevakis <jethead71@rockbox.org>2017-03-12 21:09:16 -0400
commit70c929179b80e0657e31558e34d2bc62e1176564 (patch)
treeb359577dabe279aa2e3995f7ef57581d583e7218 /firmware/common/file_internal.c
parente3081b35cdeb1e568c61369e5b3b15b6e428d3c3 (diff)
downloadrockbox-70c929179b80e0657e31558e34d2bc62e1176564.tar.gz
rockbox-70c929179b80e0657e31558e34d2bc62e1176564.tar.bz2
rockbox-70c929179b80e0657e31558e34d2bc62e1176564.zip
Dircache: Refine name allocation and error handling.
* 8 bits is enough to allow 260 character base names when five bytes is the minimum indirect storage size (0..255->5..260). * Don't truncate anything that's too long as that can lead to bad behavior, simply don't include the offending entry in the parent. * Set the .tinyname flag to 1 by default to indicate that the entry's name doesn't need freeing. Clear it only when allocating indirect storage. * Rename some things to help catch all instances Change-Id: Iff747b624acbb8e03ed26c24afdf0fc715fd9d99
Diffstat (limited to 'firmware/common/file_internal.c')
-rw-r--r--firmware/common/file_internal.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/firmware/common/file_internal.c b/firmware/common/file_internal.c
index 8fee802f6f..a109563092 100644
--- a/firmware/common/file_internal.c
+++ b/firmware/common/file_internal.c
@@ -505,7 +505,7 @@ walk_path(struct pathwalk *walkp, struct pathwalk_component *compp,
if (!(compp->attr & ATTR_DIRECTORY))
return -ENOTDIR;
- if (len >= MAX_NAME)
+ if (len > MAX_COMPNAME)
return -ENAMETOOLONG;
/* check for "." and ".." */