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 "internal/cryptlib.h"
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
|
|
||||||
|
static unsigned char conv_ascii2bin(unsigned char a);
|
||||||
#ifndef CHARSET_EBCDIC
|
#ifndef CHARSET_EBCDIC
|
||||||
# define conv_bin2ascii(a) (data_bin2ascii[(a)&0x3f])
|
# define conv_bin2ascii(a) (data_bin2ascii[(a)&0x3f])
|
||||||
# define conv_ascii2bin(a) (data_ascii2bin[(a)&0x7f])
|
|
||||||
#else
|
#else
|
||||||
/*
|
/*
|
||||||
* We assume that PEM encoded files are EBCDIC files (i.e., printable text
|
* 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)
|
* as the underlying textstring data_bin2ascii[] is already EBCDIC)
|
||||||
*/
|
*/
|
||||||
# define conv_bin2ascii(a) (data_bin2ascii[(a)&0x3f])
|
# define conv_bin2ascii(a) (data_bin2ascii[(a)&0x3f])
|
||||||
# define conv_ascii2bin(a) (data_ascii2bin[os_toascii[a]&0x7f])
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -124,6 +123,23 @@ static const unsigned char data_ascii2bin[128] = {
|
|||||||
0x31, 0x32, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
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)
|
void EVP_EncodeInit(EVP_ENCODE_CTX *ctx)
|
||||||
{
|
{
|
||||||
ctx->length = 48;
|
ctx->length = 48;
|
||||||
|
@ -2690,6 +2690,12 @@ Output = 61475600736247383d0a
|
|||||||
Encoding = invalid
|
Encoding = invalid
|
||||||
Output = 61475601736247383d0a
|
Output = 61475601736247383d0a
|
||||||
|
|
||||||
|
Encoding = invalid
|
||||||
|
Output = 61475680736247383d0a
|
||||||
|
|
||||||
|
Encoding = invalid
|
||||||
|
Output = e14756736247383d0a
|
||||||
|
|
||||||
Encoding = canonical
|
Encoding = canonical
|
||||||
Input = "OpenSSLOpenSSL\n"
|
Input = "OpenSSLOpenSSL\n"
|
||||||
Output = "T3BlblNTTE9wZW5TU0wK\n"
|
Output = "T3BlblNTTE9wZW5TU0wK\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user