summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-sign-dummy.c
diff options
context:
space:
mode:
authorJonathan Lebon <jonathan@jlebon.com>2021-08-03 16:33:28 -0400
committerJonathan Lebon <jonathan@jlebon.com>2021-08-03 16:49:49 -0400
commit75b17937cf69fbb215d3b18b6e6afba4dd9df82a (patch)
treebb14142754b64ea5dd07e411ee63ecddc07d9d30 /src/libostree/ostree-sign-dummy.c
parenta3ce5df22e2835050145841441c81a423fc8d0e4 (diff)
downloadostree-75b17937cf69fbb215d3b18b6e6afba4dd9df82a.tar.gz
lib/sign-dummy: Handle incorrect signatures correctly
We need to check all signatures for one which passes, not just fail on the first one. Reported-by: Seth Arnold <seth.arnold@canonical.com>
Diffstat (limited to 'src/libostree/ostree-sign-dummy.c')
-rw-r--r--src/libostree/ostree-sign-dummy.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libostree/ostree-sign-dummy.c b/src/libostree/ostree-sign-dummy.c
index 56f10d6e..55f28f11 100644
--- a/src/libostree/ostree-sign-dummy.c
+++ b/src/libostree/ostree-sign-dummy.c
@@ -171,7 +171,8 @@ gboolean ostree_sign_dummy_data_verify (OstreeSign *self,
if (!g_variant_is_of_type (signatures, (GVariantType *) OSTREE_SIGN_METADATA_DUMMY_TYPE))
return glnx_throw (error, "signature: dummy: wrong type passed for verification");
- for (gsize i = 0; i < g_variant_n_children(signatures); i++)
+ gsize n = g_variant_n_children(signatures);
+ for (gsize i = 0; i < n; i++)
{
g_autoptr (GVariant) child = g_variant_get_child_value (signatures, i);
g_autoptr (GBytes) signature = g_variant_get_data_as_bytes(child);
@@ -188,9 +189,9 @@ gboolean ostree_sign_dummy_data_verify (OstreeSign *self,
*out_success_message = g_strdup ("dummy: Signature verified");
return TRUE;
}
- else
- return glnx_throw (error, "signature: dummy: incorrect signature %" G_GSIZE_FORMAT, i);
}
+ if (n)
+ return glnx_throw (error, "signature: dummy: incorrect signatures found: %" G_GSIZE_FORMAT, n);
return glnx_throw (error, "signature: dummy: no signatures");
}