From eddf0d75e60740017de20301bcf5dffef9dfbb95 Mon Sep 17 00:00:00 2001 From: Jack Lloyd Date: Tue, 4 Aug 2015 22:06:44 -0400 Subject: For CBC, ECB, and XTS the output length of a zero length input is well defined, so don't fail. Fix XTS, as XTS always uses ciphertext stealing the value of output_length had been incorrect in rounding up to the block size. --- src/lib/modes/cbc/cbc.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/lib/modes/cbc') diff --git a/src/lib/modes/cbc/cbc.cpp b/src/lib/modes/cbc/cbc.cpp index dd6550fce..85241cf53 100644 --- a/src/lib/modes/cbc/cbc.cpp +++ b/src/lib/modes/cbc/cbc.cpp @@ -105,8 +105,10 @@ size_t CBC_Encryption::minimum_final_size() const size_t CBC_Encryption::output_length(size_t input_length) const { - BOTAN_ASSERT(input_length != 0, "CBC_Encryption::output_length() call"); - return round_up(input_length, cipher().block_size()); + if(input_length == 0) + return cipher().block_size(); + else + return round_up(input_length, cipher().block_size()); } void CBC_Encryption::update(secure_vector& buffer, size_t offset) -- cgit v1.2.3