chiark / gitweb /
rsa: Prepare rsa_loadpub_core for failure.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 23 Nov 2019 13:42:05 +0000 (13:42 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Feb 2020 21:56:50 +0000 (21:56 +0000)
Now the whole of st is initialised, at least well enough for dispose.
We provide an error_out section which does so.

Nothing uses it yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
rsa.c

diff --git a/rsa.c b/rsa.c
index f4aad4cb82cafbc25979526749fd224df988e2f9..e7f28b91bcb64db95a4f40acb31a57bb4de0b678 100644 (file)
--- a/rsa.c
+++ b/rsa.c
@@ -339,6 +339,7 @@ static struct rsapub *rsa_loadpub_core(RSAPUB_BNS(RSAPUB_LOADCORE_DEFBN)
     st->ops.hash=0;
     st->ops.dispose=rsapub_dispose;
     st->loc=overall_loc;
+    RSAPUB_BNS(RSAPUB_INIT_ST_BN)
 
 #define RSAPUB_LOADCORE_GETBN(ix,en,what)                              \
     if (mpz_init_set_str(&st->en,en##s,10)!=0) {                       \
@@ -352,6 +353,10 @@ static struct rsapub *rsa_loadpub_core(RSAPUB_BNS(RSAPUB_LOADCORE_DEFBN)
     RSAPUB_BNS(RSAPUB_LOADCORE_GETBN)
 
     return st;
+
+ error_out:
+    rsapub_dispose(st);
+    return 0;
 }
 
 static list_t *rsapub_apply(closure_t *self, struct cloc loc, dict_t *context,