mirror of
https://gerrit.googlesource.com/git-repo
synced 2025-07-09 08:29:02 +00:00
manifest: relax include name rules for user-specified path
Allow the user to specify relative or absolute or any other funky path that they want when using `repo init` or `repo sync`. Our goal is to restrict the paths in the remote manifest git repo we cloned from the network, not protect the user from themselves. Bug: https://crbug.com/gerrit/14156 Change-Id: I1ccfb2a6bd1dce2bd765e261bef0bbf0f8a9beb6 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/298823 Reviewed-by: Jonathan Nieder <jrn@google.com> Tested-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
@ -298,8 +298,8 @@ class IncludeElementTests(ManifestParseTestCase):
|
||||
# Check level2 proj group not removed.
|
||||
self.assertIn('l2g1', proj.groups)
|
||||
|
||||
def test_bad_name_checks(self):
|
||||
"""Check handling of bad name attribute."""
|
||||
def test_allow_bad_name_from_user(self):
|
||||
"""Check handling of bad name attribute from the user's input."""
|
||||
def parse(name):
|
||||
manifest = self.getXmlManifest(f"""
|
||||
<manifest>
|
||||
@ -307,6 +307,34 @@ class IncludeElementTests(ManifestParseTestCase):
|
||||
<default remote="default-remote" revision="refs/heads/main" />
|
||||
<include name="{name}" />
|
||||
</manifest>
|
||||
""")
|
||||
# Force the manifest to be parsed.
|
||||
manifest.ToXml()
|
||||
|
||||
# Setup target of the include.
|
||||
target = os.path.join(self.tempdir, 'target.xml')
|
||||
with open(target, 'w') as fp:
|
||||
fp.write('<manifest></manifest>')
|
||||
|
||||
# Include with absolute path.
|
||||
parse(os.path.abspath(target))
|
||||
|
||||
# Include with relative path.
|
||||
parse(os.path.relpath(target, self.manifest_dir))
|
||||
|
||||
def test_bad_name_checks(self):
|
||||
"""Check handling of bad name attribute."""
|
||||
def parse(name):
|
||||
# Setup target of the include.
|
||||
with open(os.path.join(self.manifest_dir, 'target.xml'), 'w') as fp:
|
||||
fp.write(f'<manifest><include name="{name}"/></manifest>')
|
||||
|
||||
manifest = self.getXmlManifest("""
|
||||
<manifest>
|
||||
<remote name="default-remote" fetch="http://localhost" />
|
||||
<default remote="default-remote" revision="refs/heads/main" />
|
||||
<include name="target.xml" />
|
||||
</manifest>
|
||||
""")
|
||||
# Force the manifest to be parsed.
|
||||
manifest.ToXml()
|
||||
|
Reference in New Issue
Block a user