builtins/commit: check for conflicting permissions options

This explicitly checks for commit command options asking for both
non-zero UID/GID and canonical permissions at the same time,
which are incompatible.
This commit is contained in:
Luca BRUNO committed 2021-08-18 08:16:26 +00:00
1 parent 87db562744
commit 5a3d5fb86f
2 files changed
+18 -6

No files matched your search

+17 -5
View File
@@ -555,6 +555,23 @@ ostree_builtin_commit (int argc, char **argv, OstreeCommandInvocation *invocatio
detached_metadata = g_variant_ref_sink (g_variant_builder_end (builder));
}
/* Check for conflicting options */
if (opt_canonical_permissions && opt_owner_uid > 0)
{
glnx_throw (error, "Cannot specify both --canonical-permissions and non-zero --owner-uid");
goto out;
}
if (opt_canonical_permissions && opt_owner_gid > 0)
{
glnx_throw (error, "Cannot specify both --canonical-permissions and non-zero --owner-gid");
goto out;
}
if (opt_selinux_policy && opt_selinux_policy_from_base)
{
glnx_throw (error, "Cannot specify both --selinux-policy and --selinux-policy-from-base");
goto out;
}
if (opt_no_xattrs)
flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SKIP_XATTRS;
if (opt_consume)
@@ -570,11 +587,6 @@ ostree_builtin_commit (int argc, char **argv, OstreeCommandInvocation *invocatio
flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_GENERATE_SIZES;
if (opt_disable_fsync)
ostree_repo_set_disable_fsync (repo, TRUE);
if (opt_selinux_policy && opt_selinux_policy_from_base)
{
glnx_throw (error, "Cannot specify both --selinux-policy and --selinux-policy-from-base");
goto out;
}
if (flags != 0
|| opt_owner_uid >= 0