2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-06-01 01:40:51 +00:00

pad and hope for the best of AES input buffer is not a multiple of 16

git-svn-id: svn+q:///qpdf/trunk@944 71b93d88-0707-0410-a8cf-f5a4172ac649
This commit is contained in:
Jay Berkenbilt 2010-03-27 13:17:31 +00:00
parent 75b55b7aad
commit 95114fe256

View File

@ -102,10 +102,15 @@ Pl_AES_PDF::finish()
{
if (this->offset != this->buf_size)
{
throw std::runtime_error(
"aes encrypted stream length was not a multiple of " +
QUtil::int_to_string(this->buf_size) + " bytes (offset = " +
QUtil::int_to_string(this->offset) + ")");
// This is never supposed to happen as the output is
// always supposed to be padded. However, we have
// encountered files for which the output is not a
// multiple of the block size. In this case, pad with
// zeroes and hope for the best.
assert(this->buf_size > this->offset);
std::memset(this->inbuf + this->offset, 0,
this->buf_size - this->offset);
this->offset = this->buf_size;
}
flush(true);
}