Disallow refs starting with a non-letter or digit
Change the regexp for validating refs to require at least one letter or digit
before allowing the other special chars in the set `[.-_]`. Names that start
with `.` are traditionally Unix hidden files; let's ignore them under the
assumption they're metadata for some other tool, and we don't want to
potentially conflict with the special `.` and `..` Unix directory entries.
Further, names starting with `-` are problematic for Unix cmdline option
processing; there's no good reason to support that. Finally, disallow `_` just
on general principle - it's simpler to say that ref identifiers must start with
a letter or digit.
We also ignore any existing files (that might be previously created refs) that
start with `.` in the `refs/` directory - there's a Red Hat tool for content
management that injects `.rsync` files, which is why this patch was first
written.
V1: Update to ban all refs starting with a non-letter/digit, and
also add another call to `ostree_validate_rev` in the pull
code.
Closes: https://github.com/ostreedev/ostree/issues/1285
Closes: #1286
Approved by: jlebon
This commit is contained in:
1 parent
3f3d3d64ac
commit
e466e482b1
5 files changed
+69
-2
No files matched your search
@@ -3853,6 +3853,8 @@ ostree_repo_pull_with_options (OstreeRepo *self,
|
||||
|
||||
while (g_variant_iter_loop (collection_refs_iter, "(&s&s&s)", &collection_id, &ref_name, &checksum))
|
||||
{
|
||||
if (!ostree_validate_rev (ref_name, error))
|
||||
goto out;
|
||||
g_hash_table_insert (requested_refs_to_fetch,
|
||||
ostree_collection_ref_new (collection_id, ref_name),
|
||||
(*checksum != '\0') ? g_strdup (checksum) : NULL);
|
||||
|
||||
Reference in new issue
Block a user