diff --git a/Lib/bsddb/dbtables.py b/Lib/bsddb/dbtables.py
index 85a13ff..06fcf8a 100644
--- a/Lib/bsddb/dbtables.py
+++ b/Lib/bsddb/dbtables.py
@@ -362,12 +362,11 @@
         unique = 0
         while not unique:
             # Generate a random 64-bit row ID string
-            # (note: this code has <64 bits of randomness
+            # (note: might have <64 bits of randomness
             # but it's plenty for our database id needs!)
-            # We must ensure that no null bytes are in the id value.
             blist = []
             for x in range(_rowid_str_len):
-                blist.append(random.randint(1,255))
+                blist.append(random.randint(0,255))
             newid = bytes(blist)
 
             # Guarantee uniqueness by adding this key to the database
diff --git a/Lib/bsddb/test/test_misc.py b/Lib/bsddb/test/test_misc.py
index 5223180..b3248ce 100644
--- a/Lib/bsddb/test/test_misc.py
+++ b/Lib/bsddb/test/test_misc.py
@@ -11,7 +11,7 @@
     # For Pythons w/distutils pybsddb
     from bsddb3 import db, dbshelve, hashopen
 except ImportError:
-    # For Python 2.3
+    # For the bundled bsddb
     from bsddb import db, dbshelve, hashopen
 
 #----------------------------------------------------------------------
@@ -28,10 +28,10 @@
             pass
         shutil.rmtree(self.homeDir)
 
-##     def test01_badpointer(self):
-##         dbs = dbshelve.open(self.filename)
-##         dbs.close()
-##         self.assertRaises(db.DBError, dbs.get, "foo")
+    def test01_badpointer(self):
+        dbs = dbshelve.open(self.filename)
+        dbs.close()
+        self.assertRaises(db.DBError, dbs.get, b"foo")
 
     def test02_db_home(self):
         env = db.DBEnv()
@@ -53,18 +53,37 @@
     # The problem was that make_key_dbt() was not allocating a copy of
     # string keys but FREE_DBT() was always being told to free it when the
     # database was opened with DB_THREAD.
-##     def test04_double_free_make_key_dbt(self):
-##         try:
-##             db1 = db.DB()
-##             db1.open(self.filename, None, db.DB_BTREE,
-##                      db.DB_CREATE | db.DB_THREAD)
+    def test04_double_free_make_key_dbt(self):
+        try:
+            db1 = db.DB()
+            db1.open(self.filename, None, db.DB_BTREE,
+                     db.DB_CREATE | db.DB_THREAD)
 
-##             curs = db1.cursor()
-##             t = curs.get(b"/foo", db.DB_SET)
-##             # double free happened during exit from DBC_get
-##         finally:
-##             db1.close()
-##             os.unlink(self.filename)
+            curs = db1.cursor()
+            t = curs.get(b"/foo", db.DB_SET)
+            # double free happened during exit from DBC_get
+        finally:
+            db1.close()
+            os.unlink(self.filename)
+
+    def test05_key_with_null_bytes(self):
+        try:
+            db1 = db.DB()
+            db1.open(self.filename, None, db.DB_HASH, db.DB_CREATE)
+            db1[b'a'] = b'eh?'
+            db1[b'a\x00'] = b'eh zed.'
+            db1[b'a\x00a'] = b'eh zed eh?'
+            db1[b'aaa'] = b'eh eh eh!'
+            keys = db1.keys()
+            keys.sort()
+            self.assertEqual([b'a', b'a\x00', b'a\x00a', b'aaa'], keys)
+            self.assertEqual(db1[b'a'], b'eh?')
+            self.assertEqual(db1[b'a\x00'], b'eh zed.')
+            self.assertEqual(db1[b'a\x00a'], b'eh zed eh?')
+            self.assertEqual(db1[b'aaa'], b'eh eh eh!')
+        finally:
+            db1.close()
+            os.unlink(self.filename)
 
 
 #----------------------------------------------------------------------
