From 9a3cab74ac8bad55431983ddaeb03eadd95807ec Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Thu, 17 Dec 2020 22:17:57 +0000 Subject: [PATCH] prevent too many genesis council members (#7749) * Prevent too many genesis members in elections-phragmen. * Fix test. * reformat.' --- substrate/frame/elections-phragmen/src/lib.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/substrate/frame/elections-phragmen/src/lib.rs b/substrate/frame/elections-phragmen/src/lib.rs index db2428971c..b541303f65 100644 --- a/substrate/frame/elections-phragmen/src/lib.rs +++ b/substrate/frame/elections-phragmen/src/lib.rs @@ -213,6 +213,10 @@ decl_storage! { } add_extra_genesis { config(members): Vec<(T::AccountId, BalanceOf)>; build(|config: &GenesisConfig| { + assert!( + config.members.len() as u32 <= T::DesiredMembers::get(), + "Cannot accept more than DesiredMembers genesis member", + ); let members = config.members.iter().map(|(ref member, ref stake)| { // make sure they have enough stake assert!( @@ -1442,10 +1446,20 @@ mod tests { #[should_panic = "Duplicate member in elections phragmen genesis: 2"] fn genesis_members_cannot_be_duplicate() { ExtBuilder::default() + .desired_members(3) .genesis_members(vec![(1, 10), (2, 10), (2, 10)]) .build_and_execute(|| {}); } + #[test] + #[should_panic = "Cannot accept more than DesiredMembers genesis member"] + fn genesis_members_cannot_too_many() { + ExtBuilder::default() + .genesis_members(vec![(1, 10), (2, 10), (3, 30)]) + .desired_members(2) + .build_and_execute(|| {}); + } + #[test] fn term_duration_zero_is_passive() { ExtBuilder::default()