فهرست منبع

walletdb: fix a bug in token_id_exists() function

ghassmo 4 سال پیش
والد
کامیت
7c22cd645c
1فایلهای تغییر یافته به همراه6 افزوده شده و 4 حذف شده
  1. 6 4
      src/wallet/walletdb.rs

+ 6 - 4
src/wallet/walletdb.rs

@@ -82,8 +82,8 @@ impl WalletDb {
         debug!(target: "WALLETDB", "Attempting to generate keys...");
         debug!(target: "WALLETDB", "Attempting to generate keys...");
         let conn = Connection::open(&self.path)?;
         let conn = Connection::open(&self.path)?;
         conn.pragma_update(None, "key", &self.password)?;
         conn.pragma_update(None, "key", &self.password)?;
-        let mut stmt = conn.prepare("SELECT * FROM keys WHERE key_id > :id")?;
-        let key_check = stmt.exists(&[(":id", &"0")])?;
+        let mut stmt = conn.prepare("SELECT * FROM keys WHERE key_id > ?")?;
+        let key_check = stmt.exists(params!["0"])?;
         if !key_check {
         if !key_check {
             let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
             let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
             let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
             let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
@@ -368,8 +368,8 @@ impl WalletDb {
         let conn = Connection::open(&self.path)?;
         let conn = Connection::open(&self.path)?;
         conn.pragma_update(None, "key", &self.password)?;
         conn.pragma_update(None, "key", &self.password)?;
         let id = self.get_value_serialized(token_id)?;
         let id = self.get_value_serialized(token_id)?;
-        let mut stmt = conn.prepare("SELECT * FROM coins WHERE asset_id > :id")?;
-        let id_check = stmt.exists([id])?;
+        let mut stmt = conn.prepare("SELECT * FROM coins WHERE asset_id = ?")?;
+        let id_check = stmt.exists(params![id])?;
         Ok(id_check)
         Ok(id_check)
     }
     }
 
 
@@ -455,6 +455,8 @@ mod tests {
         assert_eq!(token_id[0], asset_id);
         assert_eq!(token_id[0], asset_id);
         assert_eq!(token_id[2], asset_id);
         assert_eq!(token_id[2], asset_id);
 
 
+        assert!(wallet.token_id_exists(&asset_id)?);
+
         std::fs::remove_file(walletdb_path)?;
         std::fs::remove_file(walletdb_path)?;
 
 
         Ok(())
         Ok(())