openssl/crypto/sm2
Nicola Tuveri 67cc2bae02 [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.

Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6066)
2018-04-25 10:24:43 +01:00
..
build.info Add SM2 signature and ECIES schemes 2018-03-19 14:33:25 +01:00
sm2_crypt.c Update copyright year 2018-03-20 13:08:46 +00:00
sm2_err.c Update copyright year 2018-03-20 13:08:46 +00:00
sm2_sign.c [SM2_sign] fix double free and return value 2018-04-25 10:24:43 +01:00
sm2_za.c Update copyright year 2018-03-20 13:08:46 +00:00