aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/BitStream.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2013-10-05 11:51:54 +0200
committerJay Berkenbilt <ejb@ql.org>2013-10-10 01:50:09 +0200
commiteb1b1264b46f02550201e3e5856ff575fa47a0f7 (patch)
tree11bbc4740ffadc8469d8e0edd0ec1c3fbab91973 /libqpdf/BitStream.cc
parentc2e91d8ec30838077191fac8303974f149b41c4f (diff)
downloadqpdf-eb1b1264b46f02550201e3e5856ff575fa47a0f7.tar.zst
Security: fix potential multiplication overflow
Better sanity check inputs to bit stream reader
Diffstat (limited to 'libqpdf/BitStream.cc')
-rw-r--r--libqpdf/BitStream.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/libqpdf/BitStream.cc b/libqpdf/BitStream.cc
index eb511f72..14eae55d 100644
--- a/libqpdf/BitStream.cc
+++ b/libqpdf/BitStream.cc
@@ -16,6 +16,10 @@ BitStream::reset()
{
p = start;
bit_offset = 7;
+ if (static_cast<unsigned int>(nbytes) > static_cast<unsigned int>(-1) / 8)
+ {
+ throw std::runtime_error("array too large for bitstream");
+ }
bits_available = 8 * nbytes;
}