From d039128d9aeeae8b301e6265f42bea8858a57c14 Mon Sep 17 00:00:00 2001 From: STEVAN Antoine <antoine.stevan@isae-supaero.fr> Date: Mon, 27 May 2024 10:47:27 +0000 Subject: [PATCH] fix decoding on empty shards and when less than $k$ (dragoon/komodo!110) makes sure - "inbreeding" experiment quits when there are less than $k$ shards - `fec::decode` returns `KomodoError::TooFewShards` when no shards are provided --- examples/inbreeding/mod.rs | 4 ++++ src/fec.rs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/examples/inbreeding/mod.rs b/examples/inbreeding/mod.rs index 8be8e058..c01a0ece 100644 --- a/examples/inbreeding/mod.rs +++ b/examples/inbreeding/mod.rs @@ -158,6 +158,10 @@ where pb.set_style(sty.clone()); pb.set_message("main"); for t in 0..=max_t { + if shards.len() < k { + break; + } + if measurement_schedule(t) { let inbreeding = measure_inbreeding(&shards, k, nb_measurements, &mp, &sty, rng); println!("{}", inbreeding); diff --git a/src/fec.rs b/src/fec.rs index 47993e66..9284d326 100644 --- a/src/fec.rs +++ b/src/fec.rs @@ -160,6 +160,10 @@ pub fn encode<F: PrimeField>( /// > - if there are too few shards /// > - if there are linear dependencies between shards pub fn decode<F: PrimeField>(shards: Vec<Shard<F>>) -> Result<Vec<u8>, KomodoError> { + if shards.is_empty() { + return Err(KomodoError::TooFewShards(0, 0)); + } + let k = shards[0].k; let np = shards.len(); -- GitLab