Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3878)
- * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
}
/* Must 'OPENSSL_free' the returned data */
}
/* Must 'OPENSSL_free' the returned data */
int num;
if ((a == NULL) || (*a == '\0'))
int num;
if ((a == NULL) || (*a == '\0'))
if (*a == '-') {
neg = 1;
if (*a == '-') {
neg = 1;
num = i + neg;
if (bn == NULL)
num = i + neg;
if (bn == NULL)
/* a is the start of the hex digits, and it is 'i' long */
if (*bn == NULL) {
if ((ret = BN_new()) == NULL)
/* a is the start of the hex digits, and it is 'i' long */
if (*bn == NULL) {
if ((ret = BN_new()) == NULL)
} else {
ret = *bn;
BN_zero(ret);
} else {
ret = *bn;
BN_zero(ret);
/* Don't set the negative flag if it's zero. */
if (ret->top != 0)
ret->neg = neg;
/* Don't set the negative flag if it's zero. */
if (ret->top != 0)
ret->neg = neg;
err:
if (*bn == NULL)
BN_free(ret);
err:
if (*bn == NULL)
BN_free(ret);
}
int BN_dec2bn(BIGNUM **bn, const char *a)
}
int BN_dec2bn(BIGNUM **bn, const char *a)
int num;
if ((a == NULL) || (*a == '\0'))
int num;
if ((a == NULL) || (*a == '\0'))
if (*a == '-') {
neg = 1;
a++;
if (*a == '-') {
neg = 1;
a++;
num = i + neg;
if (bn == NULL)
num = i + neg;
if (bn == NULL)
/*
* a is the start of the digits, and it is 'i' long. We chop it into
/*
* a is the start of the digits, and it is 'i' long. We chop it into
*/
if (*bn == NULL) {
if ((ret = BN_new()) == NULL)
*/
if (*bn == NULL) {
if ((ret = BN_new()) == NULL)
} else {
ret = *bn;
BN_zero(ret);
} else {
ret = *bn;
BN_zero(ret);
/* Don't set the negative flag if it's zero. */
if (ret->top != 0)
ret->neg = neg;
/* Don't set the negative flag if it's zero. */
if (ret->top != 0)
ret->neg = neg;
err:
if (*bn == NULL)
BN_free(ret);
err:
if (*bn == NULL)
BN_free(ret);
}
int BN_asc2bn(BIGNUM **bn, const char *a)
}
int BN_asc2bn(BIGNUM **bn, const char *a)
int ret;
if ((b = BIO_new(BIO_s_file())) == NULL)
int ret;
if ((b = BIO_new(BIO_s_file())) == NULL)
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = BN_print(b, a);
BIO_free(b);
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = BN_print(b, a);
BIO_free(b);
(int)sizeof(BN_ULONG) * 8, (int)sizeof(BN_ULONG) * 8);
#endif
}
(int)sizeof(BN_ULONG) * 8, (int)sizeof(BN_ULONG) * 8);
#endif
}
- * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
break;
}
CRYPTO_THREAD_unlock(malloc_lock);
break;
}
CRYPTO_THREAD_unlock(malloc_lock);
CRYPTO_THREAD_unlock(malloc_lock);
}
CRYPTO_THREAD_unlock(malloc_lock);
}
}
static int mem_cmp(const MEM *a, const MEM *b)
}
static int mem_cmp(const MEM *a, const MEM *b)
ret = (size_t)a->addr;
ret = ret * 17851 + (ret >> 14) * 7 + (ret >> 4) * 251;
ret = (size_t)a->addr;
ret = ret * 17851 + (ret >> 14) * 7 + (ret >> 4) * 251;
}
/* returns 1 if there was an info to pop, 0 if the stack was empty. */
}
/* returns 1 if there was an info to pop, 0 if the stack was empty. */
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);
}
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);
}
}
int CRYPTO_mem_debug_pop(void)
}
int CRYPTO_mem_debug_pop(void)
ret = pop_info();
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);
}
ret = pop_info();
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);
}
}
static unsigned long break_order_num = 0;
}
static unsigned long break_order_num = 0;
if ((b = BIO_new(BIO_s_file())) == NULL) {
PEMerr(PEM_F_PEM_ASN1_READ, ERR_R_BUF_LIB);
if ((b = BIO_new(BIO_s_file())) == NULL) {
PEMerr(PEM_F_PEM_ASN1_READ, ERR_R_BUF_LIB);
}
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = PEM_ASN1_read_bio(d2i, name, b, x, cb, u);
BIO_free(b);
}
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = PEM_ASN1_read_bio(d2i, name, b, x, cb, u);
BIO_free(b);
if ((b = BIO_new(BIO_s_file())) == NULL) {
PEMerr(PEM_F_PEM_ASN1_WRITE, ERR_R_BUF_LIB);
if ((b = BIO_new(BIO_s_file())) == NULL) {
PEMerr(PEM_F_PEM_ASN1_WRITE, ERR_R_BUF_LIB);
}
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = PEM_ASN1_write_bio(i2d, name, b, x, enc, kstr, klen, callback, u);
BIO_free(b);
}
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = PEM_ASN1_write_bio(i2d, name, b, x, enc, kstr, klen, callback, u);
BIO_free(b);
EVP_CIPHER_CTX_free(ctx);
OPENSSL_cleanse(buf, PEM_BUFSIZE);
OPENSSL_clear_free(data, (unsigned int)dsize);
EVP_CIPHER_CTX_free(ctx);
OPENSSL_cleanse(buf, PEM_BUFSIZE);
OPENSSL_clear_free(data, (unsigned int)dsize);
}
int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
}
int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
v = OPENSSL_hexchar2int(*from);
if (v < 0) {
PEMerr(PEM_F_LOAD_IV, PEM_R_BAD_IV_CHARS);
v = OPENSSL_hexchar2int(*from);
if (v < 0) {
PEMerr(PEM_F_LOAD_IV, PEM_R_BAD_IV_CHARS);
}
from++;
to[i / 2] |= v << (long)((!(i & 1)) * 4);
}
*fromp = from;
}
from++;
to[i / 2] |= v << (long)((!(i & 1)) * 4);
}
*fromp = from;
}
#ifndef OPENSSL_NO_STDIO
}
#ifndef OPENSSL_NO_STDIO
if ((b = BIO_new(BIO_s_file())) == NULL) {
PEMerr(PEM_F_PEM_WRITE, ERR_R_BUF_LIB);
if ((b = BIO_new(BIO_s_file())) == NULL) {
PEMerr(PEM_F_PEM_WRITE, ERR_R_BUF_LIB);
}
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = PEM_write_bio(b, name, header, data, len);
BIO_free(b);
}
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = PEM_write_bio(b, name, header, data, len);
BIO_free(b);
goto err;
OPENSSL_clear_free(buf, PEM_BUFSIZE * 8);
EVP_ENCODE_CTX_free(ctx);
goto err;
OPENSSL_clear_free(buf, PEM_BUFSIZE * 8);
EVP_ENCODE_CTX_free(ctx);
err:
OPENSSL_clear_free(buf, PEM_BUFSIZE * 8);
EVP_ENCODE_CTX_free(ctx);
PEMerr(PEM_F_PEM_WRITE_BIO, reason);
err:
OPENSSL_clear_free(buf, PEM_BUFSIZE * 8);
EVP_ENCODE_CTX_free(ctx);
PEMerr(PEM_F_PEM_WRITE_BIO, reason);
}
#ifndef OPENSSL_NO_STDIO
}
#ifndef OPENSSL_NO_STDIO
if ((b = BIO_new(BIO_s_file())) == NULL) {
PEMerr(PEM_F_PEM_READ, ERR_R_BUF_LIB);
if ((b = BIO_new(BIO_s_file())) == NULL) {
PEMerr(PEM_F_PEM_READ, ERR_R_BUF_LIB);
}
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = PEM_read_bio(b, name, header, data, len);
BIO_free(b);
}
BIO_set_fp(b, fp, BIO_NOCLOSE);
ret = PEM_read_bio(b, name, header, data, len);
BIO_free(b);