Re: [PATCH 1/2] gost: add missing error reporting

2020-04-04 Thread Dmitry Baryshkov
Hello,

сб, 28 мар. 2020 г. в 17:20, Kinichiro Inoguchi :
>
> I had checked this by portable build and all regresses passed.
> I'm ok with this diff.

Thank you! Any further actions required from my side?

> On Thu, Mar 26, 2020 at 09:28:01PM +0300, dbarysh...@gmail.com wrote:
> > From: Dmitry Baryshkov 
> >
> > Add few more error reports to help debugging.
> >
> > Sponsored by ROSA Linux.
> >
> > Signed-off-by: Dmitry Baryshkov 
> > ---
> >  src/lib/libcrypto/gost/gostr341001_ameth.c | 20 +++-
> >  1 file changed, 15 insertions(+), 5 deletions(-)

-- 
With best wishes
Dmitry



Re: [PATCH 1/2] gost: add missing error reporting

2020-03-28 Thread Kinichiro Inoguchi
I had checked this by portable build and all regresses passed.
I'm ok with this diff.


On Thu, Mar 26, 2020 at 09:28:01PM +0300, dbarysh...@gmail.com wrote:
> From: Dmitry Baryshkov 
> 
> Add few more error reports to help debugging.
> 
> Sponsored by ROSA Linux.
> 
> Signed-off-by: Dmitry Baryshkov 
> ---
>  src/lib/libcrypto/gost/gostr341001_ameth.c | 20 +++-
>  1 file changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c 
> b/src/lib/libcrypto/gost/gostr341001_ameth.c
> index 16295996dce7..be621d0185dd 100644
> --- a/src/lib/libcrypto/gost/gostr341001_ameth.c
> +++ b/src/lib/libcrypto/gost/gostr341001_ameth.c
> @@ -96,15 +96,19 @@ decode_gost01_algor_params(EVP_PKEY *pkey, const unsigned 
> char **p, int len)
>   ec = pkey->pkey.gost;
>   if (ec == NULL) {
>   ec = GOST_KEY_new();
> - if (ec == NULL)
> + if (ec == NULL) {
> + GOSTerror(ERR_R_MALLOC_FAILURE);
>   return 0;
> + }
>   if (EVP_PKEY_assign_GOST(pkey, ec) == 0)
>   return 0;
>   }
>  
>   group = EC_GROUP_new_by_curve_name(param_nid);
> - if (group == NULL)
> + if (group == NULL) {
> + ECerror(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE);
>   return 0;
> + }
>   EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE);
>   if (GOST_KEY_set_group(ec, group) == 0) {
>   EC_GROUP_free(group);
> @@ -207,8 +211,10 @@ pub_decode_gost01(EVP_PKEY *pk, X509_PUBKEY *pub)
>   return 0;
>   }
>   p = pval->data;
> - if (decode_gost01_algor_params(pk, , pval->length) == 0)
> + if (decode_gost01_algor_params(pk, , pval->length) == 0) {
> + GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT);
>   return 0;
> + }
>  
>   octet = d2i_ASN1_OCTET_STRING(NULL, _buf, pub_len);
>   if (octet == NULL) {
> @@ -407,8 +413,10 @@ priv_decode_gost01(EVP_PKEY *pk, const 
> PKCS8_PRIV_KEY_INFO *p8inf)
>   int ptype = V_ASN1_UNDEF;
>   ASN1_STRING *pval = NULL;
>  
> - if (PKCS8_pkey_get0(_obj, _buf, _len, , p8inf) == 0)
> + if (PKCS8_pkey_get0(_obj, _buf, _len, , p8inf) == 
> 0) {
> + GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT);
>   return 0;
> + }
>   (void)EVP_PKEY_assign_GOST(pk, NULL);
>   X509_ALGOR_get0(NULL, , (const void **), palg);
>   if (ptype != V_ASN1_SEQUENCE) {
> @@ -416,8 +424,10 @@ priv_decode_gost01(EVP_PKEY *pk, const 
> PKCS8_PRIV_KEY_INFO *p8inf)
>   return 0;
>   }
>   p = pval->data;
> - if (decode_gost01_algor_params(pk, , pval->length) == 0)
> + if (decode_gost01_algor_params(pk, , pval->length) == 0) {
> + GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT);
>   return 0;
> + }
>   p = pkey_buf;
>   if (V_ASN1_OCTET_STRING == *p) {
>   /* New format - Little endian octet string */
> -- 
> 2.25.1
> 



[PATCH 1/2] gost: add missing error reporting

2020-03-26 Thread dbaryshkov
From: Dmitry Baryshkov 

Add few more error reports to help debugging.

Sponsored by ROSA Linux.

Signed-off-by: Dmitry Baryshkov 
---
 src/lib/libcrypto/gost/gostr341001_ameth.c | 20 +++-
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c 
b/src/lib/libcrypto/gost/gostr341001_ameth.c
index 16295996dce7..be621d0185dd 100644
--- a/src/lib/libcrypto/gost/gostr341001_ameth.c
+++ b/src/lib/libcrypto/gost/gostr341001_ameth.c
@@ -96,15 +96,19 @@ decode_gost01_algor_params(EVP_PKEY *pkey, const unsigned 
char **p, int len)
ec = pkey->pkey.gost;
if (ec == NULL) {
ec = GOST_KEY_new();
-   if (ec == NULL)
+   if (ec == NULL) {
+   GOSTerror(ERR_R_MALLOC_FAILURE);
return 0;
+   }
if (EVP_PKEY_assign_GOST(pkey, ec) == 0)
return 0;
}
 
group = EC_GROUP_new_by_curve_name(param_nid);
-   if (group == NULL)
+   if (group == NULL) {
+   ECerror(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE);
return 0;
+   }
EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE);
if (GOST_KEY_set_group(ec, group) == 0) {
EC_GROUP_free(group);
@@ -207,8 +211,10 @@ pub_decode_gost01(EVP_PKEY *pk, X509_PUBKEY *pub)
return 0;
}
p = pval->data;
-   if (decode_gost01_algor_params(pk, , pval->length) == 0)
+   if (decode_gost01_algor_params(pk, , pval->length) == 0) {
+   GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT);
return 0;
+   }
 
octet = d2i_ASN1_OCTET_STRING(NULL, _buf, pub_len);
if (octet == NULL) {
@@ -407,8 +413,10 @@ priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO 
*p8inf)
int ptype = V_ASN1_UNDEF;
ASN1_STRING *pval = NULL;
 
-   if (PKCS8_pkey_get0(_obj, _buf, _len, , p8inf) == 0)
+   if (PKCS8_pkey_get0(_obj, _buf, _len, , p8inf) == 
0) {
+   GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT);
return 0;
+   }
(void)EVP_PKEY_assign_GOST(pk, NULL);
X509_ALGOR_get0(NULL, , (const void **), palg);
if (ptype != V_ASN1_SEQUENCE) {
@@ -416,8 +424,10 @@ priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO 
*p8inf)
return 0;
}
p = pval->data;
-   if (decode_gost01_algor_params(pk, , pval->length) == 0)
+   if (decode_gost01_algor_params(pk, , pval->length) == 0) {
+   GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT);
return 0;
+   }
p = pkey_buf;
if (V_ASN1_OCTET_STRING == *p) {
/* New format - Little endian octet string */
-- 
2.25.1