mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-07-28 00:21:48 +03:00
Fix potential overflow in base64_encode
This commit is contained in:
@ -85,15 +85,16 @@ int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen,
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
n = ( slen << 3 ) / 6;
|
||||
n = slen / 3 + ( slen % 3 != 0 );
|
||||
|
||||
switch( ( slen << 3 ) - ( n * 6 ) )
|
||||
if( n > ( SIZE_T_MAX - 1 ) / 4 )
|
||||
{
|
||||
case 2: n += 3; break;
|
||||
case 4: n += 2; break;
|
||||
default: break;
|
||||
*olen = SIZE_T_MAX;
|
||||
return( MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL );
|
||||
}
|
||||
|
||||
n *= 4;
|
||||
|
||||
if( dlen < n + 1 )
|
||||
{
|
||||
*olen = n + 1;
|
||||
|
Reference in New Issue
Block a user