mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 07:09:59 -04:00
1465. [bug] isc_base64_decodestring() and isc_base64_tobuffer()
failed to check that trailing bits were zero allowing
some invalid base64 strings to be accepted. [RT #5397]
This commit is contained in:
parent
b0c2141b23
commit
f5af519ab5
2 changed files with 16 additions and 1 deletions
4
CHANGES
4
CHANGES
|
|
@ -1,3 +1,7 @@
|
|||
1465. [bug] isc_base64_decodestring() and isc_base64_tobuffer()
|
||||
failed to check that trailing bits were zero allowing
|
||||
some invalid base64 strings to be accepted. [RT #5397]
|
||||
|
||||
1464. [bug] Preserve "out of zone" data for outgoing zone
|
||||
transfers. [RT #5192]
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: base64.c,v 1.25 2001/11/27 01:55:53 gson Exp $ */
|
||||
/* $Id: base64.c,v 1.26 2003/04/17 06:04:13 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
|
@ -126,6 +126,17 @@ base64_decode_char(base64_decode_ctx_t *ctx, int c) {
|
|||
return (ISC_R_BADBASE64);
|
||||
if (ctx->val[2] == 64 && ctx->val[3] != 64)
|
||||
return (ISC_R_BADBASE64);
|
||||
/*
|
||||
* Check that bits that should be zero are.
|
||||
*/
|
||||
if (ctx->val[2] == 64 && (ctx->val[1] & 0xf) != 0)
|
||||
return (ISC_R_BADBASE64);
|
||||
/*
|
||||
* We don't need to test for ctx->val[2] != 64 as
|
||||
* the bottom two bits of 64 are zero.
|
||||
*/
|
||||
if (ctx->val[3] == 64 && (ctx->val[2] & 0x3) != 0)
|
||||
return (ISC_R_BADBASE64);
|
||||
n = (ctx->val[2] == 64) ? 1 :
|
||||
(ctx->val[3] == 64) ? 2 : 3;
|
||||
if (n != 3) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue