c = g_variant_n_children (files_variant);
if (n < c)
{
+ const guchar *csum_bytes;
+
g_variant_get_child (files_variant, n, "(&s@ay)", &name, &content_csum_v);
- ostree_checksum_inplace_from_bytes (ostree_checksum_bytes_peek (content_csum_v),
- tmp_checksum);
+ csum_bytes = ostree_checksum_bytes_peek_validate (content_csum_v, error);
+ if (csum_bytes == NULL)
+ goto out;
+
+ ostree_checksum_inplace_from_bytes (csum_bytes, tmp_checksum);
if (!ostree_repo_load_file (self->repo, tmp_checksum, NULL, &ret_info, NULL,
cancellable, error))
if (n < c)
{
+ const guchar *csum_bytes;
+
g_variant_get_child (dirs_variant, n, "(&s@ay@ay)",
&name, NULL, &meta_csum_v);
- ostree_checksum_inplace_from_bytes (ostree_checksum_bytes_peek (meta_csum_v),
- tmp_checksum);
+ csum_bytes = ostree_checksum_bytes_peek_validate (meta_csum_v, error);
+ if (csum_bytes == NULL)
+ goto out;
+
+ ostree_checksum_inplace_from_bytes (csum_bytes, tmp_checksum);
if (!query_child_info_dir (self->repo, tmp_checksum,
matcher, flags, &ret_info,
{
g_autoptr(GVariant) tree_csum = NULL;
g_autoptr(GVariant) meta_csum = NULL;
+ const guchar *tree_csum_bytes;
+ const guchar *meta_csum_bytes;
g_variant_get_child (dirs_variant, i, "(&s@ay@ay)",
&dirname, &tree_csum, &meta_csum);
if (subdir_target && strcmp (subdir_target, dirname) != 0)
continue;
- queue_scan_one_metadata_object_c (pull_data, ostree_checksum_bytes_peek (tree_csum),
+ tree_csum_bytes = ostree_checksum_bytes_peek_validate (tree_csum, error);
+ if (tree_csum_bytes == NULL)
+ goto out;
+
+ meta_csum_bytes = ostree_checksum_bytes_peek_validate (meta_csum, error);
+ if (meta_csum_bytes == NULL)
+ goto out;
+
+ queue_scan_one_metadata_object_c (pull_data, tree_csum_bytes,
OSTREE_OBJECT_TYPE_DIR_TREE, recursion_depth + 1);
- queue_scan_one_metadata_object_c (pull_data, ostree_checksum_bytes_peek (meta_csum),
+ queue_scan_one_metadata_object_c (pull_data, meta_csum_bytes,
OSTREE_OBJECT_TYPE_DIR_META, recursion_depth + 1);
}
GError **error)
{
gboolean ret = FALSE;
- gboolean have_parent;
g_autoptr(GVariant) commit = NULL;
g_autoptr(GVariant) parent_csum = NULL;
+ const guchar *parent_csum_bytes = NULL;
gpointer depthp;
gint depth;
/* PARSE OSTREE_SERIALIZED_COMMIT_VARIANT */
g_variant_get_child (commit, 1, "@ay", &parent_csum);
- have_parent = g_variant_n_children (parent_csum) > 0;
- if (have_parent && pull_data->maxdepth == -1)
+ if (g_variant_n_children (parent_csum) > 0)
{
- queue_scan_one_metadata_object_c (pull_data, ostree_checksum_bytes_peek (parent_csum),
+ parent_csum_bytes = ostree_checksum_bytes_peek_validate (parent_csum, error);
+ if (parent_csum_bytes == NULL)
+ goto out;
+ }
+
+ if (parent_csum_bytes != NULL && pull_data->maxdepth == -1)
+ {
+ queue_scan_one_metadata_object_c (pull_data, parent_csum_bytes,
OSTREE_OBJECT_TYPE_COMMIT, recursion_depth + 1);
}
- else if (have_parent && depth > 0)
+ else if (parent_csum_bytes != NULL && depth > 0)
{
char parent_checksum[65];
gpointer parent_depthp;
int parent_depth;
- ostree_checksum_inplace_from_bytes (ostree_checksum_bytes_peek (parent_csum), parent_checksum);
+ ostree_checksum_inplace_from_bytes (parent_csum_bytes, parent_checksum);
if (g_hash_table_lookup_extended (pull_data->commit_to_depth, parent_checksum,
NULL, &parent_depthp))
{
g_hash_table_insert (pull_data->commit_to_depth, g_strdup (parent_checksum),
GINT_TO_POINTER (parent_depth));
- queue_scan_one_metadata_object_c (pull_data, ostree_checksum_bytes_peek (parent_csum),
+ queue_scan_one_metadata_object_c (pull_data, parent_csum_bytes,
OSTREE_OBJECT_TYPE_COMMIT, recursion_depth + 1);
}
}
{
g_autoptr(GVariant) tree_contents_csum = NULL;
g_autoptr(GVariant) tree_meta_csum = NULL;
+ const guchar *tree_contents_csum_bytes;
+ const guchar *tree_meta_csum_bytes;
g_variant_get_child (commit, 6, "@ay", &tree_contents_csum);
g_variant_get_child (commit, 7, "@ay", &tree_meta_csum);
- queue_scan_one_metadata_object_c (pull_data, ostree_checksum_bytes_peek (tree_contents_csum),
+ tree_contents_csum_bytes = ostree_checksum_bytes_peek_validate (tree_contents_csum, error);
+ if (tree_contents_csum_bytes == NULL)
+ goto out;
+
+ tree_meta_csum_bytes = ostree_checksum_bytes_peek_validate (tree_meta_csum, error);
+ if (tree_meta_csum_bytes == NULL)
+ goto out;
+
+ queue_scan_one_metadata_object_c (pull_data, tree_contents_csum_bytes,
OSTREE_OBJECT_TYPE_DIR_TREE, recursion_depth + 1);
- queue_scan_one_metadata_object_c (pull_data, ostree_checksum_bytes_peek (tree_meta_csum),
+
+ queue_scan_one_metadata_object_c (pull_data, tree_meta_csum_bytes,
OSTREE_OBJECT_TYPE_DIR_META, recursion_depth + 1);
}