Fix JSON control character escaping in connection test responses

SSH stderr can contain \r and other control characters that break
JSON parsing. Strip all control chars after escaping known ones.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shuki
2026-03-04 03:03:55 +02:00
parent df6753ad78
commit bde1fe0822
2 changed files with 9 additions and 0 deletions

View File

@@ -72,6 +72,9 @@ sub handle_test_connection {
$err =~ s/\\/\\\\/g; $err =~ s/\\/\\\\/g;
$err =~ s/"/\\"/g; $err =~ s/"/\\"/g;
$err =~ s/\n/\\n/g; $err =~ s/\n/\\n/g;
$err =~ s/\r/\\r/g;
$err =~ s/\t/\\t/g;
$err =~ s/[\x00-\x1f]//g;
print qq({"success":false,"message":"SSH connection failed: $err"}); print qq({"success":false,"message":"SSH connection failed: $err"});
} }
} }
@@ -111,6 +114,9 @@ sub handle_test_connection {
$err =~ s/\\/\\\\/g; $err =~ s/\\/\\\\/g;
$err =~ s/"/\\"/g; $err =~ s/"/\\"/g;
$err =~ s/\n/\\n/g; $err =~ s/\n/\\n/g;
$err =~ s/\r/\\r/g;
$err =~ s/\t/\\t/g;
$err =~ s/[\x00-\x1f]//g;
print qq({"success":false,"message":"Connection failed: $err"}); print qq({"success":false,"message":"Connection failed: $err"});
} }
} }

View File

@@ -48,6 +48,9 @@ sub handle_test_connection {
$err =~ s/\\/\\\\/g; $err =~ s/\\/\\\\/g;
$err =~ s/"/\\"/g; $err =~ s/"/\\"/g;
$err =~ s/\n/\\n/g; $err =~ s/\n/\\n/g;
$err =~ s/\r/\\r/g;
$err =~ s/\t/\\t/g;
$err =~ s/[\x00-\x1f]//g;
print qq({"success":false,"message":"SSH connection failed: $err"}); print qq({"success":false,"message":"SSH connection failed: $err"});
} }
exit; exit;