From dc96dd55496db20187bf0d01b3dd88cd72165a0d Mon Sep 17 00:00:00 2001 From: Cyborus Date: Mon, 27 May 2024 13:09:51 -0400 Subject: fix basic auth base64 encoding length calculation --- src/lib.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index a87a696..d9b877e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -99,11 +99,13 @@ impl Forgejo { password, mfa, } => { - let len = (((username.len() + password.len() + 1) + let unencoded_len = username.len() + password.len() + 1; + let unpadded_len = unencoded_len .checked_mul(4) - .ok_or(ForgejoError::AuthTooLong)?) - / 3) - + 1; + .ok_or(ForgejoError::AuthTooLong)? + .div_ceil(3); + // round up to next multiple of 4, to account for padding + let len = unpadded_len.div_ceil(4) * 4; let mut bytes = vec![0; len]; // panic safety: len cannot be zero -- cgit v1.2.3