summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-core.c
diff options
context:
space:
mode:
authorLuca BRUNO <luca.bruno@coreos.com>2022-01-20 10:54:30 +0000
committerLuca BRUNO <luca.bruno@coreos.com>2022-01-20 10:54:30 +0000
commitda72c245f4b730d2ff41db996ec14a7f21f097e9 (patch)
treed0305e1bff5a09ce8e0150c0aba86af313a983a0 /src/libostree/ostree-core.c
parent6230b3eeab52b132d5b7e4e164380389325db040 (diff)
downloadostree-da72c245f4b730d2ff41db996ec14a7f21f097e9.tar.gz
lib/commit: reject empty metadata keys
This adds one more check to the metadata validation logic in order to reject empty metadata keys.
Diffstat (limited to 'src/libostree/ostree-core.c')
-rw-r--r--src/libostree/ostree-core.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c
index 0abd90a4..038606e9 100644
--- a/src/libostree/ostree-core.c
+++ b/src/libostree/ostree-core.c
@@ -2197,6 +2197,19 @@ ostree_validate_structureof_commit (GVariant *commit,
if (!validate_variant (commit, OSTREE_COMMIT_GVARIANT_FORMAT, error))
return FALSE;
+ g_autoptr(GVariant) metadata = NULL;
+ g_variant_get_child (commit, 0, "@a{sv}", &metadata);
+ g_assert (metadata != NULL);
+ g_autoptr(GVariantIter) metadata_iter = g_variant_iter_new (metadata);
+ g_assert (metadata_iter != NULL);
+ g_autoptr(GVariant) metadata_entry = NULL;
+ const gchar *metadata_key = NULL;
+ while (g_variant_iter_loop (metadata_iter, "{sv}", &metadata_key, NULL))
+ {
+ if (metadata_key == NULL || strlen (metadata_key) == 0)
+ return glnx_throw (error, "Empty metadata key");
+ }
+
g_autoptr(GVariant) parent_csum_v = NULL;
g_variant_get_child (commit, 1, "@ay", &parent_csum_v);
gsize n_elts;