checkout: fchown symlink to proper uid/gid
When commiting a symlink we do store the uid/gid of the actual symlink (i.e. not target). However, this was not restored on non-user-mode checkout as it should. This commit fixes that, and additionally it ensures xattrs on symlinks are not set in user-mode checkout. https://bugzilla.gnome.org/show_bug.cgi?id=741125
This commit is contained in:
parent
37a059925f
commit
bb82c17701
|
|
@ -189,12 +189,24 @@ checkout_file_from_input_at (OstreeRepoCheckoutMode mode,
|
||||||
ot_util_set_error_from_errno (error, errno);
|
ot_util_set_error_from_errno (error, errno);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xattrs)
|
if (mode != OSTREE_REPO_CHECKOUT_MODE_USER)
|
||||||
{
|
{
|
||||||
if (!gs_dfd_and_name_set_all_xattrs (destination_dfd, destination_name,
|
if (G_UNLIKELY (fchownat (destination_dfd, destination_name,
|
||||||
xattrs, cancellable, error))
|
g_file_info_get_attribute_uint32 (file_info, "unix::uid"),
|
||||||
goto out;
|
g_file_info_get_attribute_uint32 (file_info, "unix::gid"),
|
||||||
|
AT_SYMLINK_NOFOLLOW) == -1))
|
||||||
|
{
|
||||||
|
ot_util_set_error_from_errno (error, errno);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (xattrs)
|
||||||
|
{
|
||||||
|
if (!gs_dfd_and_name_set_all_xattrs (destination_dfd, destination_name,
|
||||||
|
xattrs, cancellable, error))
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_REGULAR)
|
else if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_REGULAR)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue