From c15ae3c126020c3826f15e5f50ca70a669fc1402 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20K=C3=B6sters?= <timo@koesters.xyz>
Date: Tue, 6 Oct 2020 20:43:35 +0200
Subject: [PATCH] fix: invalid typing bytes because of 0xff in numbers

---
 src/database/rooms/edus.rs | 9 ++++++---
 src/database/sending.rs    | 1 +
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/database/rooms/edus.rs b/src/database/rooms/edus.rs
index a794c690a..29f5407b6 100644
--- a/src/database/rooms/edus.rs
+++ b/src/database/rooms/edus.rs
@@ -11,6 +11,7 @@
 use std::{
     collections::HashMap,
     convert::{TryFrom, TryInto},
+    mem,
 };
 
 #[derive(Clone)]
@@ -228,9 +229,11 @@ fn typings_maintain(
                 let key = key?;
                 Ok::<_, Error>((
                     key.clone(),
-                    utils::u64_from_bytes(key.split(|&b| b == 0xff).nth(1).ok_or_else(|| {
-                        Error::bad_database("RoomTyping has invalid timestamp or delimiters.")
-                    })?)
+                    utils::u64_from_bytes(
+                        &key.splitn(2, |&b| b == 0xff).nth(1).ok_or_else(|| {
+                            Error::bad_database("RoomTyping has invalid timestamp or delimiters.")
+                        })?[0..mem::size_of::<u64>()],
+                    )
                     .map_err(|_| Error::bad_database("RoomTyping has invalid timestamp bytes."))?,
                 ))
             })
diff --git a/src/database/sending.rs b/src/database/sending.rs
index 1ed94cc2a..c818cbfc8 100644
--- a/src/database/sending.rs
+++ b/src/database/sending.rs
@@ -28,6 +28,7 @@ pub fn start_handler(&self, globals: &super::globals::Globals, rooms: &super::ro
                 select! {
                     Some(server) = futures.next() => {
                         warn!("response: {:?}", &server);
+                        warn!("futures left: {}", &futures.len());
                         match server {
                             Ok((server, _response)) => {
                                 waiting_servers.remove(&server)
-- 
GitLab