Skip to content

Commit 972f979

Browse files
authored
Merge pull request #32 from datachainlab/audit-202411-eelc-2
EELC2: improve validation of `Fraction` Signed-off-by: Jun Kimura <jun.kimura@datachain.jp>
2 parents 06864ca + 910fc6f commit 972f979

File tree

5 files changed

+12
-11
lines changed

5 files changed

+12
-11
lines changed

crates/ibc/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ ssz-rs = { git = "https://github.com/bluele/ssz_rs", branch = "serde-no-std", de
1616
hex = { version = "0.4.3", default-features = false }
1717

1818
ethereum-ibc-proto = { path = "../../proto", default-features = false }
19-
ethereum-consensus = { git = "https://github.com/datachainlab/ethereum-light-client-rs", rev = "v0.1.7", default-features = false }
20-
ethereum-light-client-verifier = { git = "https://github.com/datachainlab/ethereum-light-client-rs", rev = "v0.1.7", default-features = false }
19+
ethereum-consensus = { git = "https://github.com/datachainlab/ethereum-light-client-rs", rev = "a9a27ae291c716c68ea3bce9882c849a349b7e9f", default-features = false }
20+
ethereum-light-client-verifier = { git = "https://github.com/datachainlab/ethereum-light-client-rs", rev = "a9a27ae291c716c68ea3bce9882c849a349b7e9f", default-features = false }
2121

2222
[dev-dependencies]
2323
time = { version = "0.3", default-features = false, features = ["macros", "parsing"] }
2424
hex-literal = "0.4.1"
25-
ethereum-light-client-verifier = { git = "https://github.com/datachainlab/ethereum-light-client-rs", rev = "v0.1.7", default-features = false, features = ["test-utils"] }
25+
ethereum-light-client-verifier = { git = "https://github.com/datachainlab/ethereum-light-client-rs", rev = "a9a27ae291c716c68ea3bce9882c849a349b7e9f", default-features = false, features = ["test-utils"] }

crates/ibc/src/client_state.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,8 @@ impl<const SYNC_COMMITTEE_SIZE: usize> TryFrom<RawClientState>
813813
epochs_per_sync_committee_period: value.epochs_per_sync_committee_period.into(),
814814
ibc_address: value.ibc_address.as_slice().try_into()?,
815815
ibc_commitments_slot: H256::from_slice(&value.ibc_commitments_slot),
816-
trust_level: Fraction::new(trust_level.numerator, trust_level.denominator),
816+
trust_level: Fraction::new(trust_level.numerator, trust_level.denominator)
817+
.map_err(Error::VerificationError)?,
817818
trusting_period: value
818819
.trusting_period
819820
.ok_or(Error::MissingTrustingPeriod)?
@@ -879,8 +880,8 @@ impl<const SYNC_COMMITTEE_SIZE: usize> From<ClientState<SYNC_COMMITTEE_SIZE>> fo
879880
ibc_address: value.ibc_address.0.to_vec(),
880881
ibc_commitments_slot: value.ibc_commitments_slot.as_bytes().to_vec(),
881882
trust_level: Some(ProtoFraction {
882-
numerator: value.trust_level.numerator,
883-
denominator: value.trust_level.denominator,
883+
numerator: value.trust_level.numerator(),
884+
denominator: value.trust_level.denominator(),
884885
}),
885886
trusting_period: Some(value.trusting_period.into()),
886887
max_clock_drift: Some(value.max_clock_drift.into()),
@@ -1059,7 +1060,7 @@ mod tests {
10591060
epochs_per_sync_committee_period: PRESET.EPOCHS_PER_SYNC_COMMITTEE_PERIOD,
10601061
ibc_address: Address(hex!("ff77D90D6aA12db33d3Ba50A34fB25401f6e4c4F")),
10611062
ibc_commitments_slot: keccak256("ibc_commitments_slot"),
1062-
trust_level: Fraction::new(2, 3),
1063+
trust_level: Fraction::new(2, 3).unwrap(),
10631064
trusting_period: Duration::from_secs(60 * 60 * 27),
10641065
max_clock_drift: Duration::from_secs(60),
10651066
latest_execution_block_number: 1.into(),

crates/ibc/src/header.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ mod tests {
224224
config::minimal::get_config(),
225225
Default::default(),
226226
Default::default(),
227-
Fraction::new(2, 3),
227+
Fraction::new(2, 3).unwrap(),
228228
SystemTime::now()
229229
.duration_since(SystemTime::UNIX_EPOCH)
230230
.unwrap()

crates/ibc/src/misbehaviour.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ mod tests {
229229
config::minimal::get_config(),
230230
Default::default(),
231231
Default::default(),
232-
Fraction::new(2, 3),
232+
Fraction::new(2, 3).unwrap(),
233233
SystemTime::now()
234234
.duration_since(SystemTime::UNIX_EPOCH)
235235
.unwrap()

crates/ibc/src/update.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ mod tests {
110110
config::minimal::get_config(),
111111
Default::default(),
112112
Default::default(),
113-
Fraction::new(2, 3),
113+
Fraction::new(2, 3).unwrap(),
114114
SystemTime::now()
115115
.duration_since(SystemTime::UNIX_EPOCH)
116116
.unwrap()
@@ -149,7 +149,7 @@ mod tests {
149149
epochs_per_sync_committee_period: PRESET.EPOCHS_PER_SYNC_COMMITTEE_PERIOD,
150150
ibc_address: Address(hex!("ff77D90D6aA12db33d3Ba50A34fB25401f6e4c4F")),
151151
ibc_commitments_slot: keccak256("ibc_commitments_slot"),
152-
trust_level: Fraction::new(2, 3),
152+
trust_level: Fraction::new(2, 3).unwrap(),
153153
trusting_period: Duration::from_secs(60 * 60 * 27),
154154
max_clock_drift: Duration::from_secs(60),
155155
latest_execution_block_number: 1.into(),

0 commit comments

Comments
 (0)