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>
Sun, 5 Feb 2012 22:21:09 +0000 (09:21 +1100)
libctdb/ctdb.c

index 697fbd35be0bf001b3380c0840d8f3f2551b23a3..36cc1131d5e903f710038a97182a5c89f5372360 100644 (file)
@@ -935,6 +935,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,