diff --git a/crypto/ct/ct_oct.c b/crypto/ct/ct_oct.c index d3edd39f5d9dc124a68c1b15490f59444dad82cc..0dd691c0f711d4907c7751591940ffba75222f2c 100644 --- a/crypto/ct/ct_oct.c +++ b/crypto/ct/ct_oct.c @@ -153,7 +153,7 @@ err: int i2o_SCT_signature(const SCT *sct, unsigned char **out) { size_t len; - unsigned char *p = NULL; + unsigned char *p = NULL, *pstart = NULL; if (!SCT_signature_is_complete(sct)) { CTerr(CT_F_I2O_SCT_SIGNATURE, CT_R_SCT_INVALID_SIGNATURE); @@ -177,7 +177,7 @@ int i2o_SCT_signature(const SCT *sct, unsigned char **out) p = *out; *out += len; } else { - p = OPENSSL_malloc(len); + pstart = p = OPENSSL_malloc(len); if (p == NULL) { CTerr(CT_F_I2O_SCT_SIGNATURE, ERR_R_MALLOC_FAILURE); goto err; @@ -193,14 +193,14 @@ int i2o_SCT_signature(const SCT *sct, unsigned char **out) return len; err: - OPENSSL_free(p); + OPENSSL_free(pstart); return -1; } int i2o_SCT(const SCT *sct, unsigned char **out) { size_t len; - unsigned char *p = NULL; + unsigned char *p = NULL, *pstart = NULL; if (!SCT_is_complete(sct)) { CTerr(CT_F_I2O_SCT, CT_R_SCT_NOT_SET); @@ -224,7 +224,7 @@ int i2o_SCT(const SCT *sct, unsigned char **out) p = *out; *out += len; } else { - p = OPENSSL_malloc(len); + pstart = p = OPENSSL_malloc(len); if (p == NULL) { CTerr(CT_F_I2O_SCT, ERR_R_MALLOC_FAILURE); goto err; @@ -250,7 +250,7 @@ int i2o_SCT(const SCT *sct, unsigned char **out) return len; err: - OPENSSL_free(p); + OPENSSL_free(pstart); return -1; }