On Tue, Feb 22, 2022 at 02:01:26PM +0100, Theo Buehler wrote:
> EVP_PKEY_set1_EC_KEY() bumps eckey's refcount (that's what "set1" means),
> so eckey isn't freed when pkey is freed at the end of keyproc() or
> acctproc() (which means that secret data isn't wiped). Moving the
> freeing of eckey to the end of ec_key_create() decrements the refcount
> again which should fix this.
> 
> I don't currently have an easy way to test this, so I would appreciate
> if someone could try this.

I agree with the diff and tested this with a ecdsa domain key. No problem
found. OK claudio@
 
> Index: key.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/acme-client/key.c,v
> retrieving revision 1.5
> diff -u -p -r1.5 key.c
> --- key.c     22 Feb 2022 12:38:30 -0000      1.5
> +++ key.c     22 Feb 2022 12:51:32 -0000
> @@ -116,10 +116,10 @@ ec_key_create(FILE *f, const char *fname
>       goto out;
>  
>  err:
> -     EC_KEY_free(eckey);
>       EVP_PKEY_free(pkey);
>       pkey = NULL;
>  out:
> +     EC_KEY_free(eckey);
>       return pkey;
>  }
>  
> 

-- 
:wq Claudio

Reply via email to