xbps-rindex: [sign] free pubkey data obj after externalizing index-meta.

Otherwise the externalization process might give unexpected results.
This commit is contained in:
Juan RP 2014-02-06 11:52:36 +01:00
parent 306fe4968e
commit 11e04685ef

View File

@ -283,14 +283,14 @@ sign_repo(struct xbps_handle *xhp, const char *repodir,
xbps_dictionary_set_uint16(meta, "public-key-size", pubkeysize); xbps_dictionary_set_uint16(meta, "public-key-size", pubkeysize);
xbps_dictionary_set_cstring_nocopy(meta, "signature-by", signedby); xbps_dictionary_set_cstring_nocopy(meta, "signature-by", signedby);
xbps_dictionary_set_cstring_nocopy(meta, "signature-type", "rsa"); xbps_dictionary_set_cstring_nocopy(meta, "signature-type", "rsa");
if (!repodata_flush(xhp, repodir, repo->idx, repo->idxfiles, meta)) {
fprintf(stderr, "failed to write repodata: %s\n", strerror(errno));
rv = -1;
goto out;
}
xbps_object_release(data); xbps_object_release(data);
data = NULL; data = NULL;
if (!repodata_flush(xhp, repodir, repo->idx, repo->idxfiles, meta)) {
fprintf(stderr, "failed to write repodata: %s\n", strerror(errno));
RSA_free(rsa);
return -1;
}
printf("Signed repository (%u package%s)\n", printf("Signed repository (%u package%s)\n",
xbps_dictionary_count(repo->idx), xbps_dictionary_count(repo->idx),
xbps_dictionary_count(repo->idx) == 1 ? "" : "s"); xbps_dictionary_count(repo->idx) == 1 ? "" : "s");
@ -298,6 +298,8 @@ sign_repo(struct xbps_handle *xhp, const char *repodir,
out: out:
index_unlock(il); index_unlock(il);
if (data)
xbps_object_release(data);
if (rsa) { if (rsa) {
RSA_free(rsa); RSA_free(rsa);
rsa = NULL; rsa = NULL;