浏览代码

Update NEWS, add check for validity of shas passed to GraphWalker.ack.

Jelmer Vernooij 10 年之前
父节点
当前提交
e2ee26ab7c
共有 4 个文件被更改,包括 11 次插入0 次删除
  1. 3 0
      NEWS
  2. 2 0
      dulwich/object_store.py
  3. 2 0
      dulwich/server.py
  4. 4 0
      dulwich/tests/test_object_store.py

+ 3 - 0
NEWS

@@ -7,6 +7,9 @@
 
   * Limit delta copy length to 64K in v2 pack files. (Robert Brown)
 
+  * Strip newline from final ACKed SHA while fetching packs.
+    (Michael Edgar)
+
  IMPROVEMENTS
 
   * Add porcelain 'receive-pack' and 'upload-pack'. (Jelmer Vernooij)

+ 2 - 0
dulwich/object_store.py

@@ -1054,6 +1054,8 @@ class ObjectStoreGraphWalker(object):
 
     def ack(self, sha):
         """Ack that a revision and its ancestors are present in the source."""
+        if len(sha) != 40:
+            raise ValueError("unexpected sha %r received" % sha)
         ancestors = set([sha])
 
         # stop if we run out of heads to remove

+ 2 - 0
dulwich/server.py

@@ -464,6 +464,8 @@ class ProtocolGraphWalker(object):
         self.proto.unread_pkt_line('%s %s' % (command, value))
 
     def ack(self, have_ref):
+        if len(have_ref) != 40:
+            raise ValueError("invalid sha %r" % have_ref)
         return self._impl.ack(have_ref)
 
     def reset(self):

+ 4 - 0
dulwich/tests/test_object_store.py

@@ -401,6 +401,10 @@ class ObjectStoreGraphWalkerTests(TestCase):
         return ObjectStoreGraphWalker([x * 40 for x in heads],
             new_parent_map.__getitem__)
 
+    def test_ack_invalid_value(self):
+        gw = self.get_walker([], {})
+        self.assertRaises(ValueError, gw.ack, "tooshort")
+
     def test_empty(self):
         gw = self.get_walker([], {})
         self.assertIs(None, next(gw))