From: JINMEI Tatuya Date: Wed, 6 Mar 2013 04:27:24 +0000 (-0800) Subject: [2764] detect intermediate padding explicitly. X-Git-Tag: bind10-1.1.0beta1-release~65^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f8a24304737fef27da9f2f4f8a02c1a558d6a34e;p=thirdparty%2Fkea.git [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. --- diff --git a/src/lib/util/encode/base_n.cc b/src/lib/util/encode/base_n.cc index 3ea4486190..acf3d3e4a5 100644 --- a/src/lib/util/encode/base_n.cc +++ b/src/lib/util/encode/base_n.cc @@ -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_); }