diff --git a/Source/Engine/Platform/Unix/UnixFileSystem.cpp b/Source/Engine/Platform/Unix/UnixFileSystem.cpp index df854c138..d2550255e 100644 --- a/Source/Engine/Platform/Unix/UnixFileSystem.cpp +++ b/Source/Engine/Platform/Unix/UnixFileSystem.cpp @@ -89,8 +89,9 @@ bool DeleteUnixPathTree(const char* path) continue; // Determinate a full path of an entry - char full_path[256]; - ASSERT(pathLength + strlen(entry->d_name) < ARRAY_COUNT(full_path)); + char full_path[4096]; + if (pathLength + strlen(entry->d_name) + 2 > ARRAY_COUNT(full_path)) + continue; strcpy(full_path, path); strcat(full_path, "/"); strcat(full_path, entry->d_name); @@ -199,8 +200,9 @@ bool UnixFileSystem::GetChildDirectories(Array& results, const String& p continue; // Determinate a full path of an entry - char fullPath[256]; - ASSERT(pathLength + strlen(entry->d_name) < ARRAY_COUNT(fullPath)); + char fullPath[4096]; + if (pathLength + strlen(entry->d_name) + 2 > ARRAY_COUNT(fullPath)) + continue; strcpy(fullPath, pathStr); strcat(fullPath, "/"); strcat(fullPath, entry->d_name); @@ -353,9 +355,9 @@ bool UnixFileSystem::getFilesFromDirectoryTop(Array& results, const char continue; // Determinate a full path of an entry - char fullPath[256]; - const int32 pathLength = strlen(entry->d_name); - ASSERT(pathLength + strlen(entry->d_name) < ARRAY_COUNT(fullPath)); + char fullPath[4096]; + if (pathLength + strlen(entry->d_name) + 2 > ARRAY_COUNT(fullPath)) + continue; strcpy(fullPath, path); strcat(fullPath, "/"); strcat(fullPath, entry->d_name); @@ -419,8 +421,9 @@ bool UnixFileSystem::getFilesFromDirectoryAll(Array& results, const char continue; // Determinate a full path of an entry - char full_path[256]; - ASSERT(pathLength + strlen(entry->d_name) < ARRAY_COUNT(full_path)); + char full_path[4096]; + if (pathLength + strlen(entry->d_name) + 2 > ARRAY_COUNT(full_path)) + continue; strcpy(full_path, path); strcat(full_path, "/"); strcat(full_path, entry->d_name);