Rev 2606: Detect bad reference key values. in http://people.ubuntu.com/~robertc/baz2.0/repository
Robert Collins
robertc at robertcollins.net
Fri Jul 13 07:47:10 BST 2007
At http://people.ubuntu.com/~robertc/baz2.0/repository
------------------------------------------------------------
revno: 2606
revision-id: robertc at robertcollins.net-20070713064707-c40uq3k00sk68fev
parent: robertc at robertcollins.net-20070713054155-q8h3533j39cc0t7o
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Fri 2007-07-13 16:47:07 +1000
message:
Detect bad reference key values.
modified:
bzrlib/index.py index.py-20070712131115-lolkarso50vjr64s-1
bzrlib/tests/test_index.py test_index.py-20070712131115-lolkarso50vjr64s-2
=== modified file 'bzrlib/index.py'
--- a/bzrlib/index.py 2007-07-13 05:41:55 +0000
+++ b/bzrlib/index.py 2007-07-13 06:47:07 +0000
@@ -25,7 +25,7 @@
_SIGNATURE = "Bazaar Graph Index 1\n"
-_whitespace_re = re.compile('[\t\n\x0b\x0c\r ]')
+_whitespace_re = re.compile('[\t\n\x0b\x0c\r\x00 ]')
_newline_null_re = re.compile('[\n\0]')
@@ -56,6 +56,10 @@
raise errors.BadIndexValue(value)
if len(references) != self.reference_lists:
raise errors.BadIndexValue(references)
+ for reference_list in references:
+ for reference in reference_list:
+ if _whitespace_re.search(reference) is not None:
+ raise errors.BadIndexKey(reference)
self._nodes.append((key, references, value))
def finish(self):
=== modified file 'bzrlib/tests/test_index.py'
--- a/bzrlib/tests/test_index.py 2007-07-13 05:41:55 +0000
+++ b/bzrlib/tests/test_index.py 2007-07-13 06:47:07 +0000
@@ -51,8 +51,9 @@
def test_add_node_bad_key(self):
builder = GraphIndexBuilder()
- self.assertRaises(errors.BadIndexKey, builder.add_node, 'a key',
- (), 'data')
+ for bad_char in '\t\n\x0b\x0c\r\x00 ':
+ self.assertRaises(errors.BadIndexKey, builder.add_node,
+ 'a%skey' % bad_char, (), 'data')
def test_add_node_bad_data(self):
builder = GraphIndexBuilder()
@@ -78,6 +79,20 @@
self.assertRaises(errors.BadIndexValue, builder.add_node, 'akey',
([], [], []), 'data aa')
+ def test_add_node_bad_key_in_reference_lists(self):
+ # first list, first key - trivial
+ builder = GraphIndexBuilder(reference_lists=1)
+ self.assertRaises(errors.BadIndexKey, builder.add_node, 'akey',
+ (['a key'], ), 'data aa')
+ # need to check more than the first key in the list
+ self.assertRaises(errors.BadIndexKey, builder.add_node, 'akey',
+ (['agoodkey', 'this is a bad key'], ), 'data aa')
+ # and if there is more than one list it should be getting checked
+ # too
+ builder = GraphIndexBuilder(reference_lists=2)
+ self.assertRaises(errors.BadIndexKey, builder.add_node, 'akey',
+ ([], ['a bad key']), 'data aa')
+
class TestGraphIndex(TestCaseWithMemoryTransport):
More information about the bazaar-commits
mailing list