-
Notifications
You must be signed in to change notification settings - Fork 93
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Avoid segfaults in EVP_PKEY_CTX_free()
It is possible to call pmeth->cleanup() with an EVP_PKEY_CTX whose data is NULL. If pmeth->init() in int_ctx_new() fails, EVP_PKEY_CTX_free() is called with such a context. This in turn calls pmeth->cleanup(), and thus these cleanup functions must be careful not to use NULL data. Most of them are, but one of GOST's functions and HMAC's aren't. Reported for HMAC by Masaru Masada #129 ok bcook jsing
- Loading branch information
tb
committed
Mar 30, 2022
1 parent
a7b96f3
commit 0b62cfa
Showing
2 changed files
with
10 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
/* $OpenBSD: gostr341001_pmeth.c,v 1.15 2022/01/07 09:40:03 tb Exp $ */ | ||
/* $OpenBSD: gostr341001_pmeth.c,v 1.16 2022/03/30 07:17:48 tb Exp $ */ | ||
/* | ||
* Copyright (c) 2014 Dmitry Eremin-Solenikov <[email protected]> | ||
* Copyright (c) 2005-2006 Cryptocom LTD | ||
|
@@ -175,7 +175,10 @@ pkey_gost01_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) | |
static void | ||
pkey_gost01_cleanup(EVP_PKEY_CTX *ctx) | ||
{ | ||
struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); | ||
struct gost_pmeth_data *data; | ||
|
||
if ((data = EVP_PKEY_CTX_get_data(ctx)) == NULL) | ||
return; | ||
|
||
free(data->shared_ukm); | ||
free(data); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
/* $OpenBSD: hm_pmeth.c,v 1.12 2022/03/30 07:12:30 tb Exp $ */ | ||
/* $OpenBSD: hm_pmeth.c,v 1.13 2022/03/30 07:17:48 tb Exp $ */ | ||
/* Written by Dr Stephen N Henson ([email protected]) for the OpenSSL | ||
* project 2007. | ||
*/ | ||
|
@@ -116,7 +116,10 @@ pkey_hmac_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) | |
static void | ||
pkey_hmac_cleanup(EVP_PKEY_CTX *ctx) | ||
{ | ||
HMAC_PKEY_CTX *hctx = ctx->data; | ||
HMAC_PKEY_CTX *hctx; | ||
|
||
if ((hctx = ctx->data) == NULL) | ||
return; | ||
|
||
HMAC_CTX_cleanup(&hctx->ctx); | ||
freezero(hctx->ktmp.data, hctx->ktmp.length); | ||
|