diff options
author | NIIBE Yutaka <[email protected]> | 2017-04-11 23:47:23 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2017-04-11 23:47:23 +0000 |
commit | 05218829589f6d4b09933fa19f568c2019367d5c (patch) | |
tree | 08d2489166aaad6d947667818d8eacdc01ef6496 /g10/export.c | |
parent | g13: Include sys/sysmacros.h if available. (diff) | |
download | gnupg-05218829589f6d4b09933fa19f568c2019367d5c.tar.gz gnupg-05218829589f6d4b09933fa19f568c2019367d5c.zip |
g10: Minor clean up for export.c.
* g10/export.c (export_ssh_key): Check IDENTIFIER for error.
Release base64 thing on error of get_membuf.
--
Compiler (older) may misunderstand the variable IDENTIFIER is not
initialized, while good one can do better analysys on the value for
ERR (and thus, IDENTIFIER).
On the error of get_membuf, still, b64enc_finish should be called,
even if it lost the ERR value.
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'g10/export.c')
-rw-r--r-- | g10/export.c | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/g10/export.c b/g10/export.c index 31caa550d..9b203e322 100644 --- a/g10/export.c +++ b/g10/export.c @@ -2125,7 +2125,7 @@ export_ssh_key (ctrl_t ctrl, const char *userid) u32 curtime = make_timestamp (); kbnode_t latest_key, node; PKT_public_key *pk; - const char *identifier; + const char *identifier = NULL; membuf_t mb; estream_t fp = NULL; struct b64state b64_state; @@ -2321,8 +2321,6 @@ export_ssh_key (ctrl_t ctrl, const char *userid) identifier = "ecdsa-sha2-nistp384"; else if (!strcmp (curve, "nistp521")) identifier = "ecdsa-sha2-nistp521"; - else - identifier = NULL; if (!identifier) err = gpg_error (GPG_ERR_UNKNOWN_CURVE); @@ -2353,7 +2351,7 @@ export_ssh_key (ctrl_t ctrl, const char *userid) break; } - if (err) + if (!identifier) goto leave; if (opt.outfile && *opt.outfile && strcmp (opt.outfile, "-")) @@ -2369,22 +2367,21 @@ export_ssh_key (ctrl_t ctrl, const char *userid) es_fprintf (fp, "%s ", identifier); err = b64enc_start_es (&b64_state, fp, ""); - if (err) - goto leave; - { - void *blob; - size_t bloblen; + if (!err) + { + void *blob; + size_t bloblen; - blob = get_membuf (&mb, &bloblen); - if (!blob) - err = gpg_error_from_syserror (); - else - err = b64enc_write (&b64_state, blob, bloblen); - xfree (blob); - if (err) - goto leave; - } - err = b64enc_finish (&b64_state); + blob = get_membuf (&mb, &bloblen); + if (blob) + { + err = b64enc_write (&b64_state, blob, bloblen); + xfree (blob); + if (err) + goto leave; + } + err = b64enc_finish (&b64_state); + } if (err) goto leave; es_fprintf (fp, " openpgp:0x%08lX\n", (ulong)keyid_from_pk (pk, NULL)); |