Category: Coding Mistakes
Duplicate call in coin register
High Severity
High Impact
High Likelihood
Description
The following function register_staking_account calls coin::register twice via the following snippet:
if (!coin::is_account_registered<Lame>(addr)) {
coin::register<Lame>(account);
coin::register<Lame>(account);
};Impact
Users will not be able to register a staking account as the second coin::register fails due to the following assert statement in the coin::register function:
assert!(
!is_account_registered<CoinType>(account_addr),
error::already_exists(ECOIN_STORE_ALREADY_PUBLISHED),
);Recommendations
We recommend removing one of the coin::register calls.
Remediation
Laminar acknowledged this finding and implemented a fix in commit 691c↗.