melib/imap: send password as byte literal on LOGIN

Concerns #125

Escape IMAP passwords properly https://git.meli.delivery/meli/meli/issues/125
pull/144/head
Manos Pitsidianakis 2022-01-10 15:51:27 +02:00
parent ce2068d36b
commit d4b690d5d3
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
1 changed files with 6 additions and 7 deletions

View File

@ -376,23 +376,22 @@ impl ImapStream {
_ => {
ret.send_command(
format!(
r#"LOGIN "{}" "{}""#,
r#"LOGIN "{}" {{{}}}"#,
&server_conf
.server_username
.replace(r#"\"#, r#"\\"#)
.replace('"', r#"\""#)
.replace('{', r#"\{"#)
.replace('}', r#"\}"#),
&server_conf
.server_password
.replace(r#"\"#, r#"\\"#)
.replace('"', r#"\""#)
.replace('{', r#"\{"#)
.replace('}', r#"\}"#)
&server_conf.server_password.as_bytes().len()
)
.as_bytes(),
)
.await?;
// wait for "+ Ready for literal data" reply
ret.wait_for_continuation_request().await?;
ret.send_literal(server_conf.server_password.as_bytes())
.await?;
}
}
let tag_start = format!("M{} ", (ret.cmd_id - 1));