From 298d9e29e0b48c3c27ae879cf0ec90ab3f726f56 Mon Sep 17 00:00:00 2001 From: ThePerkinrex Date: Tue, 1 Dec 2020 19:34:12 +0100 Subject: [PATCH] Fix DB unsigneed integers overflowing --- server/src/db.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/src/db.rs b/server/src/db.rs index 95ccb14..956acc7 100644 --- a/server/src/db.rs +++ b/server/src/db.rs @@ -119,7 +119,7 @@ impl Db { match self.conn.query_row( "SELECT LobbyID from UsersInLobbies WHERE UserID = ?", params![user.as_bytes().to_vec()], - |r| r.get(0), + |r| r.get::<_ ,i32>(0).map(|x| x as u32), ) { Ok(v) => Ok(Some(v)), Err(e) => match e { @@ -134,7 +134,7 @@ impl Db { let mut prepared = self .conn .prepare("SELECT ID FROM Lobbies WHERE Public = TRUE").unwrap(); - prepared.query(params![]).and_then(|r| r.map(|r| r.get(0)).collect()).unwrap() + prepared.query(params![]).and_then(|r| r.map(|r| r.get::<_, i32>(0).map(|x| x as u32)).collect()).unwrap() } fn delete_vote(&mut self, user: Uuid) { @@ -148,7 +148,7 @@ impl Db { self.delete_vote(user); self.conn.execute( "INSERT INTO Votes(UserID, GameID) VALUES(?, ?)", - params![user.as_bytes().to_vec(), game], + params![user.as_bytes().to_vec(), game as i32], ).unwrap(); } @@ -162,19 +162,19 @@ impl Db { pub fn get_votes(&mut self, lobby: u32) -> Vec<(String, u32, bool)> { let mut prepared = self.conn.prepare_cached("SELECT Users.Name, Votes.GameID, Votes.Ready FROM Votes JOIN Users ON Users.UUID = Votes.UserID WHERE Votes.UserID IN (SELECT UserID FROM UsersInLobbies WHERE LobbyID = ?)").unwrap(); - prepared.query(params![lobby]).and_then(|r| r.map(|r| r.try_into()).collect()).unwrap() + prepared.query(params![lobby as i32]).and_then(|r| r.map(|r| r.try_into().map(|(s, n, b): (String, i32, bool)| (s, n as u32, b))).collect()).unwrap() } pub fn is_poll_finished(&mut self, lobby: u32) -> bool { self.conn.query_row( "SELECT (SELECT COUNT(*) FROM UsersInLobbies where LobbyID = ?) = (SELECT COUNT(*) FROM Votes WHERE UserID IN (SELECT UserID FROM UsersInLobbies WHERE LobbyID = ?) AND Ready = TRUE)", - params![lobby, lobby], + params![lobby as i32, lobby as i32], |r| r.get(0) ).unwrap() } pub fn delete_votes(&mut self, lobby: u32) { self.conn - .execute("DELETE FROM Votes WHERE UserId IN (SELECT UserID FROM UsersInLobbies WHERE LobbyID = ?)", params![lobby]).unwrap(); + .execute("DELETE FROM Votes WHERE UserId IN (SELECT UserID FROM UsersInLobbies WHERE LobbyID = ?)", params![lobby as i32]).unwrap(); } }