control: add macro CHECK_CONTROL_MIN_DATA_SIZE.
authorMichael Adam <obnox@samba.org>
Tue, 8 Mar 2011 23:56:25 +0000 (00:56 +0100)
committerMichael Adam <obnox@samba.org>
Wed, 9 Mar 2011 23:37:02 +0000 (00:37 +0100)
This is for the control dispatcher to check whether the input data has
a required minimum size.

include/ctdb_private.h

index 08c98783962cda059556770ce3ec0bf49b1e7b35..e2cd9c83a0ca1157cf2f70bdad91ead16793ec6d 100644 (file)
@@ -842,6 +842,14 @@ ctdb_control_send(struct ctdb_context *ctdb,
  } \
  } while (0)
 
+#define CHECK_CONTROL_MIN_DATA_SIZE(size) do { \
+ if (indata.dsize < size) { \
+        DEBUG(0,(__location__ " Invalid data size in opcode %u. Got %u expected >= %u\n", \
+                 opcode, (unsigned)indata.dsize, (unsigned)size));     \
+        return -1; \
+ } \
+ } while (0)
+
 int ctdb_control_getvnnmap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata, TDB_DATA *outdata);
 int ctdb_control_setvnnmap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata, TDB_DATA *outdata);
 int ctdb_control_getdbmap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata, TDB_DATA *outdata);