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

Fix a weird bug in dbtables: if it chose a random rowid string that contained

NULL bytes it would cause the database all sorts of problems in the future
leading to very strange random failures and corrupt dbtables.bsdTableDb dbs.
üst afed3a45
......@@ -22,7 +22,6 @@ import sys
import copy
import random
import struct
import base64
from types import ListType, StringType
import cPickle as pickle
......@@ -361,11 +360,12 @@ class bsdTableDB :
unique = 0
while not unique:
# Generate a random 64-bit row ID string
# (note: this code has <64 bits of randomness
# (note: this code has <56 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),
random.randint(0, 2147483647))
random.randint(0, 2147483647) | 0x01010101,
random.randint(0, 2147483647) | 0x01010101)
# 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