Kaydet (Commit) 3ef21cb7 authored tarafından Gregory P. Smith's avatar Gregory P. Smith

A cleaner fix than the one committed last night. Generate random rowids that

do not contain null bytes.
üst f8a2a0b5
......@@ -360,12 +360,13 @@ class bsdTableDB :
unique = 0
while not unique:
# Generate a random 64-bit row ID string
# (note: this code has <56 bits of randomness
# (note: this code has <64 bits of randomness
# but it's plenty for our database id needs!)
# The | 0x01010101 is to ensure no null bytes are in the value
newid = struct.pack('ll',
random.randint(0, 2147483647) | 0x01010101,
random.randint(0, 2147483647) | 0x01010101)
# We must ensure that no null bytes are in the id value.
blist = []
for x in xrange(_rowid_str_len):
blist.append(random.randint(1,255))
newid = struct.pack('B'*_rowid_str_len, *blist)
# Guarantee uniqueness by adding this key to the database
try:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment