Skip to content

Commit cd1d258

Browse files
committed
Merge #165: Fix CI
c49ce3f fix decoding error (caught by fuzz test) (Andrew Poelstra) 93b12bc update elementsd to 0.8.0 (Andrew Poelstra) b537c23 add doccomment to all pub extern crates; export a couple more crates (Andrew Poelstra) Pull request description: Currently master is failing CI for a couple reasons. Fix these. ACKs for top commit: delta1: ACK c49ce3f Tree-SHA512: 39c01564ce7d292f15996fd5bef3a87917f873bcc7f2b305cff33a27f76e5d49f27a26af1359cf24a527a80caa5d10003bdc8fb8986a86052417a87b1b8087a2
2 parents eba8e71 + c49ce3f commit cd1d258

5 files changed

Lines changed: 29 additions & 11 deletions

File tree

contrib/test.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ fi
1010

1111
# Pin dependencies as required if we are using MSRV toolchain.
1212
if cargo --version | grep "1\.41"; then
13-
# can be removed with elementsd 0.8.0
14-
cargo update -p zip --precise 0.5.6
1513
# 1.0.157 uses syn 2.0 which requires edition 2018
1614
cargo update -p serde --precise 1.0.156
1715
# 1.0.108 uses `matches!` macro so does not work with Rust 1.41.1, bad `syn` no biscuit.

elementsd-tests/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ edition = "2018"
88

99
[dependencies]
1010
base64 = "0.13.0"
11+
bitcoin30 = { package = "bitcoin", version = "0.30" }
1112
elements = {path = "../"}
12-
elementsd = "0.6.0"
13+
elementsd = "0.8.0"
1314
rand = "0.8"
1415

elementsd-tests/src/pset.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ extern crate rand;
66

77
use crate::{setup, Call};
88

9-
use elements::bitcoin::{self, Address, Amount};
9+
use bitcoin30::{self, Address, Amount};
1010
use elements::bitcoin::hashes::hex::ToHex;
1111
use elements::bitcoin::hashes::Hash;
1212
use elements::encode::{deserialize, serialize};
@@ -60,7 +60,7 @@ fn tx_issuance() {
6060
let value = elementsd.call(
6161
"createpsbt",
6262
&[
63-
json!([{ "txid": prevout.txid, "vout": prevout.vout, "issuance_amount": 1000, "issuance_tokens": 1}]),
63+
json!([{ "txid": prevout.txid.to_string(), "vout": prevout.vout, "issuance_amount": 1000, "issuance_tokens": 1}]),
6464
json!([
6565
{address_asset: "1000", "asset": asset_id.to_string(), "blinder_index": 0},
6666
{address_reissuance: "1", "asset": reissuance_id.to_string(), "blinder_index": 0},
@@ -87,23 +87,25 @@ fn tx_issuance() {
8787
fn tx_pegin() {
8888
let (elementsd, bitcoind) = setup(true);
8989
let bitcoind = bitcoind.unwrap();
90-
let btc_addr = bitcoind.client.get_new_address(None, None).unwrap();
90+
let btc_addr = bitcoind.client.get_new_address(None, None).unwrap()
91+
.assume_checked();
9192
let address_lbtc = elementsd.get_new_address();
9293
bitcoind.client.generate_to_address(101, &btc_addr).unwrap();
9394
let (pegin_address, claim_script) = elementsd.get_pegin_address();
94-
let address = Address::from_str(&pegin_address).unwrap();
95+
let address = Address::from_str(&pegin_address).unwrap()
96+
.assume_checked();
9597
let amount = Amount::from_sat(100_000_000);
9698
let txid = bitcoind
9799
.client
98100
.send_to_address(&address, amount, None, None, None, None, None, None)
99101
.unwrap();
100102
let tx = bitcoind.client.get_raw_transaction(&txid, None).unwrap();
101-
let tx_bytes = serialize(&tx);
103+
let tx_bytes = bitcoin30::consensus::serialize(&tx);
102104
let vout = tx
103105
.output
104106
.iter()
105107
.position(|o| {
106-
let addr = Address::from_script(&o.script_pubkey, bitcoin::Network::Regtest);
108+
let addr = Address::from_script(&o.script_pubkey, bitcoin30::Network::Regtest);
107109
addr.unwrap().to_string() == pegin_address
108110
})
109111
.unwrap();

src/lib.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,16 @@
2525
#![deny(unused_mut)]
2626
#![deny(missing_docs)]
2727

28+
/// Re-export of bitcoin crate
2829
pub extern crate bitcoin;
2930
#[macro_use]
3031
extern crate bitcoin_hashes as just_imported_for_the_macros;
31-
extern crate slip21;
32+
/// Re-export of slip21 crate
33+
pub extern crate slip21;
34+
/// Re-export of secp256k1-zkp crate
3235
pub extern crate secp256k1_zkp;
33-
#[cfg(feature = "serde")] #[macro_use] extern crate actual_serde as serde;
36+
/// Re-export of serde crate
37+
#[cfg(feature = "serde")] #[macro_use] pub extern crate actual_serde as serde;
3438
#[cfg(all(test, feature = "serde"))] extern crate serde_test;
3539

3640
#[cfg(test)] extern crate rand;

src/transaction.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,9 @@ impl Decodable for TxIn {
521521
}
522522
if has_issuance {
523523
issuance = AssetIssuance::consensus_decode(&mut d)?;
524+
if issuance.is_null() {
525+
return Err(encode::Error::ParseFailed("superfluous asset issuance"));
526+
}
524527
} else {
525528
issuance = AssetIssuance::default();
526529
}
@@ -2299,4 +2302,14 @@ mod tests {
22992302
");
23002303
assert!(tx.input[0].previous_output.is_null());
23012304
}
2305+
2306+
#[test]
2307+
fn superfluous_asset_issuance() {
2308+
let tx = Vec::<u8>::from_hex("1ae80068000109fee1000000000000000000000000000000000000000000000000000000000000005acf37f60000c7280028a7000000006e000000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010115190000b9bfb80000000100000000d8d8d8d8d8d8d8d8d8d8d8d8d8d80000000000b8bfb8").unwrap();
2309+
if let encode::Error::ParseFailed("superfluous asset issuance") = Transaction::consensus_decode(&tx[..]).unwrap_err() {
2310+
// ok. FIXME replace this with matches! when we move to 1.48.0
2311+
} else {
2312+
panic!("Incorrect error for bad transaction");
2313+
}
2314+
}
23022315
}

0 commit comments

Comments
 (0)