mirror of
https://github.com/openssl/openssl.git
synced 2024-11-21 01:15:20 +08:00
[SM2_sign] fix double free and return value
Currently, critical bugs prevent using SM2 signatures through the `EVP_PKEY` interface: any application that managed to satisfy the requirement of forcing SM3 as the message digest – even if this is currently not possible transparently through the `EVP_PKEY` interface and requires manually forcing the MD selection – would crash with a segmentation fault upon calling the `SM2_sign()` function. This is easily verified using the OpenSSL CLI to execute this critical code path under the right conditions: `openssl dgst -sm3 -hex -sign sm2.eckey /path/to/file/to/sign` The issue is caused by a double free at the end of `SM2_sign()` in `crypto/sm2/sm2_sign.c` in case of successful signature generation. In addition, even if the double free was not causing segfaults, the function returns the wrong return value in case of success (it would return 0 rather than 1). This patch fixes both problems.
This commit is contained in:
parent
6862de63d4
commit
b5a85f70d8
@ -279,9 +279,7 @@ int SM2_sign(int type, const unsigned char *dgst, int dgstlen,
|
||||
|
||||
*siglen = i2d_ECDSA_SIG(s, &sig);
|
||||
|
||||
ECDSA_SIG_free(s);
|
||||
|
||||
ret = 0;
|
||||
ret = 1;
|
||||
|
||||
done:
|
||||
ECDSA_SIG_free(s);
|
||||
|
Loading…
Reference in New Issue
Block a user