Skip to content

Commit

Permalink
gross fix for short messages crashing
Browse files Browse the repository at this point in the history
  • Loading branch information
SpiralP committed Apr 25, 2020
1 parent 625f891 commit efc65bf
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 15 deletions.
10 changes: 7 additions & 3 deletions src/chat/hidden_communication/clients.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ async fn do_query() -> Result<()> {
timeout(Duration::from_secs(5), async {
loop {
let message = wait_for_message().await;
if &message.as_bytes()[0..1] == b"&" && &message.as_bytes()[2..] == b"Players using:" {
if message.len() >= 2
&& (&message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..] == b"Players using:")
{
SHOULD_BLOCK.set(true);
break;
}
Expand All @@ -70,8 +73,9 @@ async fn do_query() -> Result<()> {
let timeout_result = timeout(Duration::from_secs(5), async {
loop {
let message = wait_for_message().await;
if (&message.as_bytes()[0..1] == b"&" && &message.as_bytes()[2..4] == b" ")
|| &message.as_bytes()[0..3] == b"> &"
if message.len() >= 4
&& ((&message.as_bytes()[0..1] == b"&" && &message.as_bytes()[2..4] == b" ")
|| &message.as_bytes()[0..3] == b"> &")
{
// probably a /clients response
messages.push(message.to_string());
Expand Down
14 changes: 8 additions & 6 deletions src/chat/hidden_communication/whispers/incoming.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ async fn step() -> Result<()> {
let message = wait_for_message().await;

// incoming whisper
if &message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..6] == b"[>] "
&& message.ends_with(": &f?CEF?")
if message.len() >= 6
&& (&message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..6] == b"[>] "
&& message.ends_with(": &f?CEF?"))
{
SHOULD_BLOCK.set(true);

Expand Down Expand Up @@ -71,9 +72,10 @@ async fn step() -> Result<()> {
loop {
let message = wait_for_message().await;

if &message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..6] == b"[<] "
&& message.contains(": &f!CEF!")
if message.len() >= 6
&& (&message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..6] == b"[<] "
&& message.contains(": &f!CEF!"))
{
SHOULD_BLOCK.set(true);

Expand Down
14 changes: 8 additions & 6 deletions src/chat/hidden_communication/whispers/outgoing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ pub async fn query_whisper(real_name: &str) -> Result<()> {
loop {
let message = wait_for_message().await;

if &message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..6] == b"[<] "
&& message.ends_with(": &f?CEF?")
if message.len() >= 6
&& (&message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..6] == b"[<] "
&& message.ends_with(": &f?CEF?"))
{
SHOULD_BLOCK.set(true);
break;
Expand All @@ -34,9 +35,10 @@ pub async fn query_whisper(real_name: &str) -> Result<()> {
let full_message_encoded = timeout(Duration::from_secs(5), async {
loop {
let message = wait_for_message().await;
if &message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..6] == b"[>] "
&& message.contains(": &f!CEF!")
if message.len() >= 6
&& (&message.as_bytes()[0..1] == b"&"
&& &message.as_bytes()[2..6] == b"[>] "
&& message.contains(": &f!CEF!"))
{
SHOULD_BLOCK.set(true);
debug!("got whisper response {:?}", message);
Expand Down

0 comments on commit efc65bf

Please sign in to comment.