libarchive: Fix assertion error if used with CANONICAL_PERMISSIONS

I was trying to do a change for rpm-ostree to use
`OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS`
for container builds with `bare-user-only,` but hit an assertion here
ultimtely because we weren't setting `standard::type`.

Rather than hand-rolling `GFileInfo` creation, use the stat buffer conversion
code which is more robust and used in multiple places already.

Closes: #1227
Approved by: jlebon
This commit is contained in:
Colin Walters 2017-09-28 15:41:02 -04:00 committed by Atomic Bot
parent 6c7302fcdd
commit a7f04a14b5

View File

@ -871,10 +871,14 @@ ostree_repo_import_archive_to_mtree (OstreeRepo *self,
if (opts->autocreate_parents && if (opts->autocreate_parents &&
ostree_mutable_tree_get_metadata_checksum (mtree) == NULL) ostree_mutable_tree_get_metadata_checksum (mtree) == NULL)
{ {
glnx_unref_object GFileInfo *fi = g_file_info_new (); /* _ostree_stbuf_to_gfileinfo() only looks at these fields,
g_file_info_set_attribute_uint32 (fi, "unix::uid", 0); * but we use it to ensure it sets all of the relevant GFileInfo
g_file_info_set_attribute_uint32 (fi, "unix::gid", 0); * properties.
g_file_info_set_attribute_uint32 (fi, "unix::mode", DEFAULT_DIRMODE); */
struct stat stbuf = { .st_mode = DEFAULT_DIRMODE,
.st_uid = 0,
.st_gid = 0 };
g_autoptr(GFileInfo) fi = _ostree_stbuf_to_gfileinfo (&stbuf);
g_autoptr(GFileInfo) mfi = NULL; g_autoptr(GFileInfo) mfi = NULL;
(void)_ostree_repo_commit_modifier_apply (self, modifier, "/", (void)_ostree_repo_commit_modifier_apply (self, modifier, "/",