Skip to content

Commit

Permalink
De-couple package and stage name validation
Browse files Browse the repository at this point in the history
  • Loading branch information
Al2Klimov committed Aug 2, 2021
1 parent 9169c80 commit c666f81
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 13 deletions.
4 changes: 2 additions & 2 deletions lib/remote/configfileshandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ bool ConfigFilesHandler::HandleRequest(
String packageName = HttpUtility::GetLastParameter(params, "package");
String stageName = HttpUtility::GetLastParameter(params, "stage");

if (!ConfigPackageUtility::ValidateName(packageName)) {
if (!ConfigPackageUtility::ValidatePackageName(packageName)) {
HttpUtility::SendJsonError(response, params, 400, "Invalid package name.");
return true;
}

if (!ConfigPackageUtility::ValidateName(stageName)) {
if (!ConfigPackageUtility::ValidateStageName(stageName)) {
HttpUtility::SendJsonError(response, params, 400, "Invalid stage name.");
return true;
}
Expand Down
4 changes: 2 additions & 2 deletions lib/remote/configpackageshandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ void ConfigPackagesHandler::HandlePost(

String packageName = HttpUtility::GetLastParameter(params, "package");

if (!ConfigPackageUtility::ValidateName(packageName)) {
if (!ConfigPackageUtility::ValidatePackageName(packageName)) {
HttpUtility::SendJsonError(response, params, 400, "Invalid package name '" + packageName + "'.");
return;
}
Expand Down Expand Up @@ -151,7 +151,7 @@ void ConfigPackagesHandler::HandleDelete(

String packageName = HttpUtility::GetLastParameter(params, "package");

if (!ConfigPackageUtility::ValidateName(packageName)) {
if (!ConfigPackageUtility::ValidatePackageName(packageName)) {
HttpUtility::SendJsonError(response, params, 400, "Invalid package name '" + packageName + "'.");
return;
}
Expand Down
7 changes: 6 additions & 1 deletion lib/remote/configpackageutility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,12 @@ bool ConfigPackageUtility::ContainsDotDot(const String& path)
return false;
}

bool ConfigPackageUtility::ValidateName(const String& name)
bool ConfigPackageUtility::ValidatePackageName(const String& packageName)
{
return ValidateFreshName(packageName);
}

bool ConfigPackageUtility::ValidateFreshName(const String& name)
{
if (name.IsEmpty())
return false;
Expand Down
10 changes: 9 additions & 1 deletion lib/remote/configpackageutility.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,13 @@ class ConfigPackageUtility
static std::vector<std::pair<String, bool> > GetFiles(const String& packageName, const String& stageName);

static bool ContainsDotDot(const String& path);
static bool ValidateName(const String& name);
static bool ValidatePackageName(const String& packageName);

static inline
bool ValidateStageName(const String& stageName)
{
return ValidateFreshName(stageName);
}

static std::mutex& GetStaticPackageMutex();
static std::mutex& GetStaticActiveStageMutex();
Expand All @@ -54,6 +60,8 @@ class ConfigPackageUtility
static void WriteStageConfig(const String& packageName, const String& stageName);

static void TryActivateStageCallback(const ProcessResult& pr, const String& packageName, const String& stageName, bool activate, bool reload);

static bool ValidateFreshName(const String& name);
};

}
Expand Down
10 changes: 5 additions & 5 deletions lib/remote/configstageshandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ void ConfigStagesHandler::HandleGet(
String packageName = HttpUtility::GetLastParameter(params, "package");
String stageName = HttpUtility::GetLastParameter(params, "stage");

if (!ConfigPackageUtility::ValidateName(packageName))
if (!ConfigPackageUtility::ValidatePackageName(packageName))
return HttpUtility::SendJsonError(response, params, 400, "Invalid package name '" + packageName + "'.");

if (!ConfigPackageUtility::ValidateName(stageName))
if (!ConfigPackageUtility::ValidateStageName(stageName))
return HttpUtility::SendJsonError(response, params, 400, "Invalid stage name '" + stageName + "'.");

ArrayData results;
Expand Down Expand Up @@ -104,7 +104,7 @@ void ConfigStagesHandler::HandlePost(

String packageName = HttpUtility::GetLastParameter(params, "package");

if (!ConfigPackageUtility::ValidateName(packageName))
if (!ConfigPackageUtility::ValidatePackageName(packageName))
return HttpUtility::SendJsonError(response, params, 400, "Invalid package name '" + packageName + "'.");

bool reload = true;
Expand Down Expand Up @@ -184,10 +184,10 @@ void ConfigStagesHandler::HandleDelete(
String packageName = HttpUtility::GetLastParameter(params, "package");
String stageName = HttpUtility::GetLastParameter(params, "stage");

if (!ConfigPackageUtility::ValidateName(packageName))
if (!ConfigPackageUtility::ValidatePackageName(packageName))
return HttpUtility::SendJsonError(response, params, 400, "Invalid package name '" + packageName + "'.");

if (!ConfigPackageUtility::ValidateName(stageName))
if (!ConfigPackageUtility::ValidateStageName(stageName))
return HttpUtility::SendJsonError(response, params, 400, "Invalid stage name '" + stageName + "'.");

try {
Expand Down
4 changes: 2 additions & 2 deletions test/remote-configpackageutility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ BOOST_AUTO_TEST_CASE(ValidateName)
{
std::vector<std::string> validNames {"foo", "foo-bar", "FooBar", "Foo123", "_Foo-", "123bar"};
for (const std::string& n : validNames) {
BOOST_CHECK_MESSAGE(ConfigPackageUtility::ValidateName(n), "'" << n << "' should be valid");
BOOST_CHECK_MESSAGE(ConfigPackageUtility::ValidatePackageName(n), "'" << n << "' should be valid");
}

std::vector<std::string> invalidNames {"", ".", "..", "foo.bar", "foo/../bar", "foo/bar", "foo:bar"};
for (const std::string& n : invalidNames) {
BOOST_CHECK_MESSAGE(!ConfigPackageUtility::ValidateName(n), "'" << n << "' should not be valid");
BOOST_CHECK_MESSAGE(!ConfigPackageUtility::ValidatePackageName(n), "'" << n << "' should not be valid");
}
}

Expand Down

0 comments on commit c666f81

Please sign in to comment.