Commit f8a24304 authored by JINMEI Tatuya's avatar JINMEI Tatuya
Browse files

[2764] detect intermediate padding explicitly.

we previously relied on boost rejecting the padding chracter and throwing
an exception; since Boost 1.53 paddding characters are considered valid
and conerted to all-0 bits, so we now have to do it ourselves.  The detection
logic doesn't rely on the new behavior of Boost, so it should be backward
compatible.
parent 6c4f943e
......@@ -203,8 +203,16 @@ public:
// we can catch and reject this type of invalid input.
isc_throw(BadValue, "Unexpected end of input in BASE decoder");
}
if (in_pad_) {
return (base_zero_code_);
if (*base_ == BASE_PADDING_CHAR) {
// Padding can only happen at the end of the input string. We can
// detect any violation of this by checking in_pad_, which is
// true iff we are on or after the first valid sequence of padding
// characters.
if (in_pad_) {
return (base_zero_code_);
} else {
isc_throw(BadValue, "Intermediate padding found");
}
} else {
return (*base_);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment