libctdb: dont allow ctdb_writerecord() for readonly records
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Fri, 28 Oct 2011 02:38:32 +0000 (13:38 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Fri, 28 Oct 2011 02:38:32 +0000 (13:38 +1100)
libctdb/ctdb.c

index 099ceac0877523720885625940e8c05c9c10d4db..2f694a1c347370d92e1d8949a9254c240d6a0e02 100644 (file)
@@ -950,6 +950,13 @@ ctdb_readonlyrecordlock_async(struct ctdb_db *ctdb_db, TDB_DATA key,
 bool ctdb_writerecord(struct ctdb_db *ctdb_db,
                      struct ctdb_lock *lock, TDB_DATA data)
 {
+       if (lock->readonly) {
+               errno = EBADF;
+               DEBUG(ctdb_db->ctdb, LOG_ALERT,
+                     "ctdb_writerecord: Can not write, read-only record.");
+               return false;
+       }
+
        if (lock->ctdb_db != ctdb_db) {
                errno = EBADF;
                DEBUG(ctdb_db->ctdb, LOG_ALERT,