]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1891] be sure to reject addNSEC3 attempt before begin transaction.
authorJINMEI Tatuya <jinmei@isc.org>
Wed, 18 Apr 2012 00:29:39 +0000 (17:29 -0700)
committerJINMEI Tatuya <jinmei@isc.org>
Wed, 18 Apr 2012 00:29:39 +0000 (17:29 -0700)
src/lib/datasrc/sqlite3_accessor.cc
src/lib/datasrc/tests/sqlite3_accessor_unittest.cc

index f2fd31adb9bab580180ad77e2f8dae7a694923c2..cb594deca61eb0366071f160203c814cfc517808 100644 (file)
@@ -1159,7 +1159,10 @@ void
 SQLite3Accessor::addNSEC3RecordToZone(
     const string (&columns)[ADD_NSEC3_COLUMN_COUNT])
 {
-    // TODO: no transaction case
+    if (!dbparameters_->updating_zone) {
+        isc_throw(DataSourceError, "adding NSEC3-related record to SQLite3 "
+                  "data source without transaction");
+    }
 
     // XXX: the current implementation of SQLite3 schema requires the 'owner'
     // column, and the current implementation of getAllRecords() relies on it,
index c83c213491f1512ca2b4f221405445f503bbe0f9..e2fe1c2a8f6389e2583a67942b3abef149875ffc 100644 (file)
@@ -1079,6 +1079,12 @@ TEST_F(SQLite3Update, duplicateAdd) {
 TEST_F(SQLite3Update, invalidAdd) {
     // An attempt of add before an explicit start of transaction
     EXPECT_THROW(accessor->addRecordToZone(add_columns), DataSourceError);
+
+    // Same for addNSEC3.
+    copy(nsec3_data, nsec3_data + DatabaseAccessor::ADD_NSEC3_COLUMN_COUNT,
+         add_nsec3_columns);
+    EXPECT_THROW(accessor->addNSEC3RecordToZone(add_nsec3_columns),
+                 DataSourceError);
 }
 
 TEST_F(SQLite3Update, deleteRecord) {