diff options
author | Jonathan Lebon <jonathan@jlebon.com> | 2021-08-03 16:33:28 -0400 |
---|---|---|
committer | Jonathan Lebon <jonathan@jlebon.com> | 2021-08-03 16:49:49 -0400 |
commit | 75b17937cf69fbb215d3b18b6e6afba4dd9df82a (patch) | |
tree | bb14142754b64ea5dd07e411ee63ecddc07d9d30 /src | |
parent | a3ce5df22e2835050145841441c81a423fc8d0e4 (diff) | |
download | ostree-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')
-rw-r--r-- | src/libostree/ostree-sign-dummy.c | 7 |
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"); } |