Port bootstrap script length limit

This commit is contained in:
Kovid Goyal 2023-02-24 08:16:53 +05:30
parent 9870c94007
commit e02ba7f389
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 24 additions and 8 deletions

View File

@ -56,12 +56,6 @@ print(' '.join(map(str, buf)))'''), lines=13, cols=77)
t('ssh --kitten=one -p 12 --kitten two -ix main', identity_file='x', port=12, extra_args=(('--kitten', 'one'), ('--kitten', 'two')))
self.assertTrue(runtime_dir())
def test_ssh_bootstrap_sh_cmd_limit(self):
# dropbear has a 9000 bytes maximum command length limit
sh_script, _, _ = bootstrap_script(SSHOptions({'interpreter': 'sh'}), script_type='sh', remote_args=[], request_id='123-123')
rcmd = wrap_bootstrap_script(sh_script, 'sh')
self.assertLessEqual(sum(len(x) for x in rcmd), 9000)
@property
@lru_cache()
def all_possible_sh(self):

View File

@ -27,12 +27,12 @@ func TestSSHConfigParsing(t *testing.T) {
if err != nil {
t.Fatal(err)
}
actual := c.final_env_instructions(for_python, func(key string) (string, bool) {
actual := final_env_instructions(for_python, func(key string) (string, bool) {
if key == "LOCAL_ENV" {
return "LOCAL_VAL", true
}
return "", false
})
}, c.Env...)
if expected_env == nil {
expected_env = []string{}
}

View File

@ -37,3 +37,25 @@ func TestCloneEnv(t *testing.T) {
t.Fatalf("Failed to deserialize env\n%s", diff)
}
}
func basic_connection_data() *connection_data {
return &connection_data{
script_type: "sh", request_id: "123-123", remote_args: []string{}, host_opts: NewConfig(),
username: "testuser", hostname_for_match: "host.test",
}
}
func TestSSHBootstrapScriptLimit(t *testing.T) {
cd := basic_connection_data()
err := get_remote_command(cd)
if err != nil {
t.Fatal(err)
}
total := 0
for _, x := range cd.rcmd {
total += len(x)
}
if total > 9000 {
t.Fatalf("Bootstrap script too large: %d bytes", total)
}
}