diff --git a/src/contract/dao/src/entrypoint/auth_xfer.rs b/src/contract/dao/src/entrypoint/auth_xfer.rs index 8370130b9..8f937bcce 100644 --- a/src/contract/dao/src/entrypoint/auth_xfer.rs +++ b/src/contract/dao/src/entrypoint/auth_xfer.rs @@ -183,11 +183,12 @@ pub(crate) fn dao_authxfer_process_instruction( let proposal_coins: Vec = deserialize(&auth_call.unwrap().auth_data[..])?; // Check all the outputs except the last match - let send_outs = xfer_params.outputs.split_last().unwrap().1; - if send_outs.len() != proposal_coins.len() { + // There is the additional DAO change output which is always last. + let outs = xfer_params.outputs; + if outs.len() != proposal_coins.len() + 1 { return Err(DaoError::AuthXferWrongNumberOutputs.into()) } - for (output, coin) in send_outs.iter().zip(proposal_coins.iter()) { + for (output, coin) in outs.iter().zip(proposal_coins.iter()) { if output.coin != *coin { return Err(DaoError::AuthXferWrongOutputCoin.into()) }