From: JINMEI Tatuya Date: Wed, 18 Apr 2012 00:29:39 +0000 (-0700) Subject: [1891] be sure to reject addNSEC3 attempt before begin transaction. X-Git-Tag: trac2351_base~226^2~116^2~25^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fb7201b9ff0aaa126ff82595b7a4c2f69ea8f4c7;p=thirdparty%2Fkea.git [1891] be sure to reject addNSEC3 attempt before begin transaction. --- diff --git a/src/lib/datasrc/sqlite3_accessor.cc b/src/lib/datasrc/sqlite3_accessor.cc index f2fd31adb9..cb594deca6 100644 --- a/src/lib/datasrc/sqlite3_accessor.cc +++ b/src/lib/datasrc/sqlite3_accessor.cc @@ -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, diff --git a/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc b/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc index c83c213491..e2fe1c2a8f 100644 --- a/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc +++ b/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc @@ -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) {