From bf623800b1f69a9ad02a1f6a731cc4870a6bd499 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 13 Aug 2020 10:12:41 +0200 Subject: [PATCH 1/2] ostree_test: Support loading dirmeta objects --- ostree_test.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ostree_test.c b/ostree_test.c index 2c440f0a..68a860e4 100644 --- a/ostree_test.c +++ b/ostree_test.c @@ -25,6 +25,12 @@ handle (char *filename) g_autofree char *s = ot_tree_meta_print (tree, TRUE); g_print ("%s: %s\n", filename, s); } + else if (g_str_has_suffix (filename, ".dirmeta")) + { + OtDirMetaRef dir = ot_dir_meta_from_data (contents, size); + g_autofree char *s = ot_dir_meta_print (dir, TRUE); + g_print ("%s: %s\n", filename, s); + } else if (g_str_has_suffix (filename, "summary")) { OtSummaryRef summary = ot_summary_from_data (contents, size); From 411f0c07ef54881fd887e24b43df3d64adfe539a Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 13 Aug 2020 10:12:57 +0200 Subject: [PATCH 2/2] Fix bounds check of struct members of fixed size As noticed by Tim Gross in issue #2 this was off-by one. --- variant-schema-compiler | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/variant-schema-compiler b/variant-schema-compiler index 763c1abf..4c93410c 100755 --- a/variant-schema-compiler +++ b/variant-schema-compiler @@ -1429,7 +1429,7 @@ class Field: if self.type.is_basic(): if self.type.is_fixed(): if not self.struct.is_fixed(): - C(" g_assert (offset + {fixed_size} < v.size);"); + C(" g_assert (offset + {fixed_size} <= v.size);"); val = genC("({ctype})G_STRUCT_MEMBER({readctype}, v.base, offset)") if "bigendian" in self.attributes: val = "%s_FROM_BE(%s)" % (self.type.get_ctype().upper(), val) @@ -1450,7 +1450,7 @@ class Field: else: if self.type.is_fixed(): if not self.struct.is_fixed(): - C(" g_assert (offset + {fixed_size} < v.size);"); + C(" g_assert (offset + {fixed_size} <= v.size);"); C(" return ({TypeNameRef}) {{ G_STRUCT_MEMBER_P(v.base, offset), {fixed_size} }};") else: C(" gsize start = offset;");