Quellcode durchsuchen

Handle invalid ref that pretends to be a sub-folder under a valid ref

KS Chan vor 6 Jahren
Ursprung
Commit
17d990542e
2 geänderte Dateien mit 8 neuen und 1 gelöschten Zeilen
  1. 1 1
      dulwich/refs.py
  2. 7 0
      dulwich/tests/test_refs.py

+ 1 - 1
dulwich/refs.py

@@ -617,7 +617,7 @@ class DiskRefsContainer(RefsContainer):
                     # Read only the first 40 bytes
                     return header + f.read(40 - len(SYMREF))
         except IOError as e:
-            if e.errno in (errno.ENOENT, errno.EISDIR):
+            if e.errno in (errno.ENOENT, errno.EISDIR, errno.ENOTDIR):
                 return None
             raise
 

+ 7 - 0
dulwich/tests/test_refs.py

@@ -486,6 +486,13 @@ class DiskRefsContainerTests(RefsContainerTests, TestCase):
                          self._refs.read_ref(b'refs/heads/packed'))
         self.assertEqual(None, self._refs.read_ref(b'nonexistant'))
 
+    def test_read_loose_ref(self):
+        self._refs[b'refs/heads/foo'] = (
+            b'df6800012397fb85c56e7418dd4eb9405dee075c'
+        )
+
+        self.assertEqual(None, self._refs.read_ref(b'refs/heads/foo/bar'))
+
     def test_non_ascii(self):
         try:
             encoded_ref = u'refs/tags/schön'.encode(