fs: exfat: Use strncpy() and bail on too long filenames
In case the filename is too long, longer than PATH_MAX - 1, it would overflow dirs->dirname array. Add missing check and also use strncpy() to prevent the overflow in any case. Fixes CID 550305: Security best practices violations (STRING_OVERFLOW) Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
@@ -720,6 +720,9 @@ int exfat_fs_opendir(const char *filename, struct fs_dir_stream **dirsp)
|
||||
struct exfat_node *dnode;
|
||||
int err;
|
||||
|
||||
if (strlen(filename) >= PATH_MAX)
|
||||
return -ENAMETOOLONG;
|
||||
|
||||
err = exfat_lookup_realpath(&ctxt.ef, &dnode, filename);
|
||||
if (err)
|
||||
return err;
|
||||
@@ -736,7 +739,7 @@ int exfat_fs_opendir(const char *filename, struct fs_dir_stream **dirsp)
|
||||
if (!dirs)
|
||||
return -ENOMEM;
|
||||
|
||||
strcpy(dirs->dirname, filename);
|
||||
strncpy(dirs->dirname, filename, PATH_MAX - 1);
|
||||
dirs->offset = -1;
|
||||
|
||||
*dirsp = &dirs->fs_dirs;
|
||||
|
||||
Reference in New Issue
Block a user