Skip to content

Commit a96ba17

Browse files
committed
Add test for CVE-2023-41040
1 parent a56113e commit a96ba17

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

‎test/test_refs.py‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
66

77
fromitertoolsimportchain
8+
frompathlibimportPath
89

910
fromgitimport (
1011
Reference,
@@ -20,9 +21,11 @@
2021
fromgit.objects.tagimportTagObject
2122
fromtest.libimportTestBase, with_rw_repo
2223
fromgit.utilimportActor
24+
fromgitdb.excimportBadName
2325

2426
importgit.refsasrefs
2527
importos.pathasosp
28+
importtempfile
2629

2730

2831
classTestRefs(TestBase):
@@ -616,3 +619,14 @@ def test_dereference_recursive(self):
616619

617620
deftest_reflog(self):
618621
assertisinstance(self.rorepo.heads.master.log(), RefLog)
622+
623+
deftest_refs_outside_repo(self):
624+
# Create a file containing a valid reference outside the repository. Attempting
625+
# to access it should raise an exception. This tests for CVE-2023-41040.
626+
git_dir=Path(self.rorepo.git_dir)
627+
repo_parent_dir=git_dir.parent.parent
628+
withtempfile.NamedTemporaryFile(dir=repo_parent_dir) asref_file:
629+
ref_file.write(b"91b464cd624fe22fbf54ea22b85a7e5cca507cfe")
630+
ref_file.flush()
631+
ref_file_name=Path(ref_file.name).name
632+
self.assertRaises(BadName, self.rorepo.commit, f"../../{ref_file_name}")

0 commit comments

Comments
(0)