summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/filetree.c7
-rw-r--r--apps/tree.c8
2 files changed, 13 insertions, 2 deletions
diff --git a/apps/filetree.c b/apps/filetree.c
index 64283b2..79ea1eb 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -436,9 +436,14 @@ int ft_enter(struct tree_context* c)
char buf[MAX_PATH];
struct entry* file = tree_get_entry_at(c, c->selected_item);
int file_attr = file->attr;
+ int len;
if (c->currdir[1])
- snprintf(buf,sizeof(buf),"%s/%s",c->currdir, file->name);
+ {
+ len = snprintf(buf,sizeof(buf),"%s/%s",c->currdir, file->name);
+ if ((unsigned) len > sizeof(buf))
+ splash(HZ, ID2P(LANG_PLAYLIST_ACCESS_ERROR));
+ }
else
snprintf(buf,sizeof(buf),"/%s",file->name);
diff --git a/apps/tree.c b/apps/tree.c
index e03a494..6b49691 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -608,6 +608,7 @@ static int dirbrowse(void)
{
int numentries=0;
char buf[MAX_PATH];
+ int len;
int button;
#ifdef HAVE_LCD_BITMAP
int oldbutton;
@@ -800,8 +801,13 @@ static int dirbrowse(void)
attr = entry->attr;
if (currdir[1]) /* Not in / */
- snprintf(buf, sizeof buf, "%s/%s",
+ {
+ len = snprintf(buf, sizeof buf, "%s/%s",
currdir, entry->name);
+
+ if ((unsigned) len > sizeof(buf))
+ splash(HZ, ID2P(LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR));
+ }
else /* In / */
snprintf(buf, sizeof buf, "/%s", entry->name);
}