Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions lib/Service/DaemonConfigService.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,21 @@ public function __construct(
) {
}

/**
* Validate that a string does not contain control characters.
* Control characters (0x00-0x1F and 0x7F) can cause issues with URL routing and display.
*/
private function containsControlCharacters(string $value): bool {
return preg_match('/[\x00-\x1F\x7F]/', $value) === 1;
}

public function registerDaemonConfig(array $params): ?DaemonConfig {
$name = $params['name'] ?? '';
if ($name === '' || $this->containsControlCharacters($name)) {
$this->logger->error('Failed to register daemon configuration: `name` contains invalid characters or is empty.');
return null;
}

$bad_patterns = ['http', 'https', 'tcp', 'udp', 'ssh'];
$docker_host = (string)$params['host'];
foreach ($bad_patterns as $bad_pattern) {
Expand Down Expand Up @@ -117,6 +131,12 @@ public function getDaemonConfigByName(string $name): ?DaemonConfig {
}

public function updateDaemonConfig(DaemonConfig $daemonConfig): ?DaemonConfig {
$name = $daemonConfig->getName() ?? '';
if ($name === '' || $this->containsControlCharacters($name)) {
$this->logger->error('Failed to update daemon configuration: `name` contains invalid characters or is empty.');
return null;
}

try {
return $this->mapper->update($daemonConfig);
} catch (Exception $e) {
Expand Down
Loading