diff options
author | Cyborus <cyborus@cyborus.xyz> | 2024-05-27 19:09:51 +0200 |
---|---|---|
committer | Cyborus <cyborus@cyborus.xyz> | 2024-05-27 19:09:51 +0200 |
commit | dc96dd55496db20187bf0d01b3dd88cd72165a0d (patch) | |
tree | 2603a7a68090f10a4ca3ecbc751f817c7747e025 /src | |
parent | fix follower account email (diff) | |
download | forgejo-api-dc96dd55496db20187bf0d01b3dd88cd72165a0d.tar.xz forgejo-api-dc96dd55496db20187bf0d01b3dd88cd72165a0d.zip |
fix basic auth base64 encoding length calculation
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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 |