base64 decode: check for high bit
Previously, the conversion would silently coerce to ASCII. Now, we error out. Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
3cdd1e94b1
commit
b785504a10
@ -60,9 +60,9 @@
|
||||
#include "internal/cryptlib.h"
|
||||
#include <openssl/evp.h>
|
||||
|
||||
static unsigned char conv_ascii2bin(unsigned char a);
|
||||
#ifndef CHARSET_EBCDIC
|
||||
# define conv_bin2ascii(a) (data_bin2ascii[(a)&0x3f])
|
||||
# define conv_ascii2bin(a) (data_ascii2bin[(a)&0x7f])
|
||||
#else
|
||||
/*
|
||||
* We assume that PEM encoded files are EBCDIC files (i.e., printable text
|
||||
@ -71,7 +71,6 @@
|
||||
* as the underlying textstring data_bin2ascii[] is already EBCDIC)
|
||||
*/
|
||||
# define conv_bin2ascii(a) (data_bin2ascii[(a)&0x3f])
|
||||
# define conv_ascii2bin(a) (data_ascii2bin[os_toascii[a]&0x7f])
|
||||
#endif
|
||||
|
||||
/*-
|
||||
@ -124,6 +123,23 @@ static const unsigned char data_ascii2bin[128] = {
|
||||
0x31, 0x32, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
#ifndef CHARSET_EBCDIC
|
||||
static unsigned char conv_ascii2bin(unsigned char a)
|
||||
{
|
||||
if (a & 0x80)
|
||||
return B64_ERROR;
|
||||
return data_ascii2bin[a];
|
||||
}
|
||||
#else
|
||||
static unsigned char conv_ascii2bin(unsigned char a)
|
||||
{
|
||||
a = os_toascii[a];
|
||||
if (a & 0x80)
|
||||
return B64_ERROR;
|
||||
return data_ascii2bin[a];
|
||||
}
|
||||
#endif
|
||||
|
||||
void EVP_EncodeInit(EVP_ENCODE_CTX *ctx)
|
||||
{
|
||||
ctx->length = 48;
|
||||
|
@ -2690,6 +2690,12 @@ Output = 61475600736247383d0a
|
||||
Encoding = invalid
|
||||
Output = 61475601736247383d0a
|
||||
|
||||
Encoding = invalid
|
||||
Output = 61475680736247383d0a
|
||||
|
||||
Encoding = invalid
|
||||
Output = e14756736247383d0a
|
||||
|
||||
Encoding = canonical
|
||||
Input = "OpenSSLOpenSSL\n"
|
||||
Output = "T3BlblNTTE9wZW5TU0wK\n"
|
||||
|
Loading…
Reference in New Issue
Block a user