X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fct%2Fct_b64.c;h=f0bf3aff29d2686d2e0945149b85c35baa072e96;hb=eea5f335b81d89554272a1fab8de9e40656509da;hp=80bd45e2d9934d75be2e80f472769db01813f31b;hpb=ceab33e2cfecbe57762e06576d2dd124c0424336;p=oweals%2Fopenssl.git diff --git a/crypto/ct/ct_b64.c b/crypto/ct/ct_b64.c index 80bd45e2d9..f0bf3aff29 100644 --- a/crypto/ct/ct_b64.c +++ b/crypto/ct/ct_b64.c @@ -45,6 +45,11 @@ static int ct_base64_decode(const char *in, unsigned char **out) goto err; } + /* Subtract padding bytes from |outlen| */ + while (in[--inlen] == '=') { + --outlen; + } + *out = outbuf; return outlen; err: @@ -59,6 +64,7 @@ SCT *SCT_new_from_base64(unsigned char version, const char *logid_base64, { SCT *sct = SCT_new(); unsigned char *dec = NULL; + const unsigned char* p = NULL; int declen; if (sct == NULL) { @@ -97,7 +103,9 @@ SCT *SCT_new_from_base64(unsigned char version, const char *logid_base64, CTerr(CT_F_SCT_NEW_FROM_BASE64, X509_R_BASE64_DECODE_ERROR); goto err; } - if (o2i_SCT_signature(sct, (const unsigned char **)&dec, declen) <= 0) + + p = dec; + if (o2i_SCT_signature(sct, &p, declen) <= 0) goto err; OPENSSL_free(dec); dec = NULL; @@ -149,7 +157,7 @@ int CTLOG_new_from_base64(CTLOG **ct_log, const char *pkey_base64, const char *n *ct_log = CTLOG_new(pkey, name); if (*ct_log == NULL) { EVP_PKEY_free(pkey); - return -1; + return 0; } return 1;