From 7f3c4b1ab3837e75e890232bd2c3ecb9f6390732 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Wed, 15 Jul 2015 00:13:13 +0200 Subject: Fix round_up 1. src/lib/codec/base64/base64.cpp: : (round_up(input_length, 3) / 3) * 4; 2. src/lib/codec/base64/base64.cpp: : (round_up(input_length, 4) * 3) / 4; 3. src/lib/filters/transform_filter.cpp: return round_up(target_size, update_granularity); 4. src/lib/math/bigint/bigint.cpp: m_reg.resize(round_up(size, 8)); 5. src/lib/math/bigint/bigint.cpp: m_reg.resize(round_up((length / WORD_BYTES) + 1, 8)); 6. src/lib/math/numbertheory/mp_numth.cpp: BigInt z(BigInt::Positive, round_up(2*x_sw, 16)); 7. src/lib/modes/cbc/cbc.cpp: return round_up(input_length, cipher().block_size()); 8. src/lib/modes/ecb/ecb.cpp: return round_up(input_length, cipher().block_size()); 9. src/lib/modes/xts/xts.cpp: return round_up(input_length, cipher().block_size()); 10. src/lib/pbkdf/pbkdf2/pbkdf2.cpp: const size_t blocks_needed = round_up(out_len, prf_sz) / prf_sz; 11. src/lib/tls/tls_record.cpp: const size_t buf_size = round_up( 12. src/lib/utils/rounding.h:inline T round_up(T n, T align_to) 1. Reason for change 2. Reason for change 3. first argument cannot be 0 (`target_size = 1024`) 4. Is a bug in the current implementation iff `size = 0` 5. first argument cannot be 0 6. round_up should return 0 if `x_sw = 0` 7. ? 8. ? 9. ? 10. first argument cannot be 0 (`if(out_len == 0) return 0;`) 11. first argument is unlikely to be 0 (`iv_size + msg_length + mac_size + (block_size ? 1 : 0)`) 12. Implementation --- src/lib/codec/base64/base64.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/lib/codec') diff --git a/src/lib/codec/base64/base64.cpp b/src/lib/codec/base64/base64.cpp index 1b1767aa1..a63d2b373 100644 --- a/src/lib/codec/base64/base64.cpp +++ b/src/lib/codec/base64/base64.cpp @@ -78,9 +78,7 @@ size_t base64_encode(char out[], std::string base64_encode(const byte input[], size_t input_length) { - const size_t output_length = (input_length == 0) - ? 0 - : (round_up(input_length, 3) / 3) * 4; + const size_t output_length = (round_up(input_length, 3) / 3) * 4; std::string output(output_length, 0); size_t consumed = 0; @@ -231,10 +229,8 @@ size_t base64_decode(byte output[], secure_vector base64_decode(const char input[], size_t input_length, bool ignore_ws) - { - const size_t output_length = (input_length == 0) - ? 0 - : (round_up(input_length, 4) * 3) / 4; + { + const size_t output_length = (round_up(input_length, 4) * 3) / 4; secure_vector bin(output_length); size_t written = base64_decode(bin.data(), -- cgit v1.2.3