Procházet zdrojové kódy

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

KS Chan před 6 roky
rodič
revize
17d990542e
2 změnil soubory, kde provedl 8 přidání a 1 odebrání
  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(