Skip to content

Commit 38d1f61

Browse files
fix: implement proper data source clearing in set_data_sources
- Iterate through existing valid_data_sources to invalidate them in is_valid_data_source mapping - Clear the storage vector using truncate(0) before adding new data sources - Match Solidity PythGovernance.sol behavior: invalidate old sources, clear array, add new sources - Fix unused Result warning in authorize_governance_transfer call - All cargo tests pass (13 passed, 0 failed) Co-Authored-By: [email protected] <[email protected]>
1 parent 2047dbf commit 38d1f61

File tree

1 file changed

+12
-1
lines changed
  • target_chains/stylus/contracts/pyth-receiver/src

1 file changed

+12
-1
lines changed

target_chains/stylus/contracts/pyth-receiver/src/lib.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,7 @@ impl PythReceiver {
553553
return Err(PythReceiverError::InvalidGovernanceMessage);
554554
}
555555
GovernancePayload::AuthorizeGovernanceDataSourceTransfer(payload) => {
556-
self.authorize_governance_transfer(payload.claim_vaa);
556+
self.authorize_governance_transfer(payload.claim_vaa)?;
557557
}
558558
GovernancePayload::UpgradeContract(_payload) => {}
559559
GovernancePayload::SetValidPeriod(payload) => {
@@ -749,6 +749,17 @@ fn parse_wormhole_proof(vaa: Vaa) -> Result<MerkleRoot<Keccak160>, PythReceiverE
749749
}
750750

751751
fn set_data_sources(receiver: &mut PythReceiver, data_sources: Vec<DataSource>) {
752+
for i in 0..receiver.valid_data_sources.len() {
753+
if let Some(storage_data_source) = receiver.valid_data_sources.get(i) {
754+
let data_source = DataSource {
755+
chain_id: storage_data_source.chain_id.get(),
756+
emitter_address: storage_data_source.emitter_address.get(),
757+
};
758+
receiver.is_valid_data_source.setter(data_source).set(false);
759+
}
760+
}
761+
762+
receiver.valid_data_sources.truncate(0);
752763

753764
for data_source in data_sources {
754765
let mut storage_data_source = receiver.valid_data_sources.grow();

0 commit comments

Comments
 (0)