aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kbx/keybox-blob.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/kbx/keybox-blob.c b/kbx/keybox-blob.c
index ebbcdf8ff..f7abb6ccd 100644
--- a/kbx/keybox-blob.c
+++ b/kbx/keybox-blob.c
@@ -702,9 +702,6 @@ _keybox_create_openpgp_blob (KEYBOXBLOB *r_blob,
*r_blob = NULL;
- if (!info->nuids || !info->nsigs)
- return gpg_error (GPG_ERR_BAD_PUBKEY);
-
/* If we have a signature status vector, check that the number of
elements matches the actual number of signatures. */
if (sigstatus && sigstatus[0] != info->nsigs)
@@ -721,19 +718,27 @@ _keybox_create_openpgp_blob (KEYBOXBLOB *r_blob,
err = gpg_error_from_syserror ();
goto leave;
}
+
blob->nuids = info->nuids;
- blob->uids = xtrycalloc (blob->nuids, sizeof *blob->uids );
- if (!blob->uids)
+ if (blob->nuids)
{
- err = gpg_error_from_syserror ();
- goto leave;
+ blob->uids = xtrycalloc (blob->nuids, sizeof *blob->uids );
+ if (!blob->uids)
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
}
+
blob->nsigs = info->nsigs;
- blob->sigs = xtrycalloc (blob->nsigs, sizeof *blob->sigs );
- if (!blob->sigs)
+ if (blob->nsigs)
{
- err = gpg_error_from_syserror ();
- goto leave;
+ blob->sigs = xtrycalloc (blob->nsigs, sizeof *blob->sigs );
+ if (!blob->sigs)
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
}
err = pgp_create_key_part (blob, info);