| 378 | } |
| 379 | |
| 380 | bool ConfigPackageUtility::ValidateFreshName(const String& name) |
| 381 | { |
| 382 | if (name.IsEmpty()) |
| 383 | return false; |
| 384 | |
| 385 | /* check for path injection */ |
| 386 | if (ContainsDotDot(name)) |
| 387 | return false; |
| 388 | |
| 389 | return std::all_of(name.Begin(), name.End(), [](char c) { |
| 390 | return std::isalnum(c, std::locale::classic()) || c == '_' || c == '-'; |
| 391 | }); |
| 392 | } |
| 393 | |
| 394 | std::mutex& ConfigPackageUtility::GetStaticPackageMutex() |
| 395 | { |