Core/VirtualDirectory: Prevent storing . and .. entries

This commit is contained in:
Lynix 2022-05-16 21:32:59 +02:00
parent 52f822fbcb
commit 0e82c2893a
1 changed files with 15 additions and 0 deletions

View File

@ -214,6 +214,9 @@ namespace Nz
if (!CreateOrRetrieveDirectory(path, dir, entryName))
throw std::runtime_error("invalid path");
if (entryName == "." || entryName == "..")
throw std::runtime_error("invalid entry name");
return dir->StoreInternal(std::string(entryName), DirectoryEntry{ std::move(directory) });
}
@ -226,6 +229,9 @@ namespace Nz
if (!CreateOrRetrieveDirectory(path, dir, entryName))
throw std::runtime_error("invalid path");
if (entryName == "." || entryName == "..")
throw std::runtime_error("invalid entry name");
return dir->StoreInternal(std::string(entryName), PhysicalDirectoryEntry{ std::move(directoryPath) });
}
@ -238,6 +244,9 @@ namespace Nz
if (!CreateOrRetrieveDirectory(path, dir, entryName))
throw std::runtime_error("invalid path");
if (entryName == "." || entryName == "..")
throw std::runtime_error("invalid entry name");
return dir->StoreInternal(std::string(entryName), FileContentEntry{ std::move(file) });
}
@ -250,6 +259,9 @@ namespace Nz
if (!CreateOrRetrieveDirectory(path, dir, entryName))
throw std::runtime_error("invalid path");
if (entryName == "." || entryName == "..")
throw std::runtime_error("invalid entry name");
return dir->StoreInternal(std::string(entryName), PhysicalFileEntry{ std::move(filePath) });
}
@ -262,6 +274,9 @@ namespace Nz
if (!CreateOrRetrieveDirectory(path, dir, entryName))
throw std::runtime_error("invalid path");
if (entryName == "." || entryName == "..")
throw std::runtime_error("invalid entry name");
return dir->StoreInternal(std::string(entryName), DataPointerEntry{ data, size });
}