lib: Move bareuseronly verification into commit/core
Conceptually `ostree-repo-pull.c` should be be written using just public APIs; we theoretically support building without HTTP for people who just want to use the object store portion and do their own fetching. We have some nontrivial behaviors in the pull layer though; one of those is the "bareuseronly" verification. Make a new internal API that accepts flags, move it into `commit.c`. This is prep for further work in changing object import to support reflinks. Closes: #1193 Approved by: jlebon
This commit is contained in:
1 parent
d4c7093e37
commit
160864d557
9 files changed
+316
-288
No files matched your search
@@ -1998,6 +1998,29 @@ ostree_validate_structureof_dirtree (GVariant *dirtree,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* This bit mirrors similar code in commit_loose_regfile_object() for the
|
||||
* bare-user-only mode. It's opt-in though for all pulls.
|
||||
*/
|
||||
gboolean
|
||||
_ostree_validate_bareuseronly_mode (guint32 content_mode,
|
||||
const char *checksum,
|
||||
GError **error)
|
||||
{
|
||||
if (S_ISREG (content_mode))
|
||||
{
|
||||
const guint32 invalid_modebits = ((content_mode & ~S_IFMT) & ~0775);
|
||||
if (invalid_modebits > 0)
|
||||
return glnx_throw (error, "Content object %s: invalid mode 0%04o with bits 0%04o",
|
||||
checksum, content_mode, invalid_modebits);
|
||||
}
|
||||
else if (S_ISLNK (content_mode))
|
||||
; /* Nothing */
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
validate_stat_mode_perms (guint32 mode,
|
||||
GError **error)
|
||||
|
||||
Reference in new issue
Block a user