summaryrefslogtreecommitdiff
path: root/lib/package.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/package.c')
-rw-r--r--lib/package.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/package.c b/lib/package.c
index 068b381f2..36ed5abc6 100644
--- a/lib/package.c
+++ b/lib/package.c
@@ -65,11 +65,14 @@ rpmTagVal headerMergeLegacySigs(Header h, Header sigh, char **msg)
const struct taglate_s *xl;
struct rpmtd_s td;
- rpmtdReset(&td);
for (xl = xlateTags; xl->stag; xl++) {
/* There mustn't be one in the main header */
if (headerIsEntry(h, xl->xtag))
- break;
+ goto exit;
+ }
+
+ rpmtdReset(&td);
+ for (xl = xlateTags; xl->stag; xl++) {
if (headerGet(sigh, xl->stag, &td, HEADERGET_RAW|HEADERGET_MINMEM)) {
/* Translate legacy tags */
if (xl->stag != xl->xtag)
@@ -88,6 +91,7 @@ rpmTagVal headerMergeLegacySigs(Header h, Header sigh, char **msg)
}
rpmtdFreeData(&td);
+exit:
if (xl->stag) {
rasprintf(msg, "invalid signature tag %s (%d)",
rpmTagGetName(xl->xtag), xl->xtag);