[PULL,32/33] block: Assert validity of BdrvActionOps

Message ID 1379073063-14963-33-git-send-email-kwolf@redhat.com
State New
Headers show

Commit Message

Kevin Wolf Sept. 13, 2013, 11:51 a.m.
From: Max Reitz <mreitz@redhat.com>

In qmp_transaction, assert that the BdrvActionOps to be used is actually

This assertion failing is very improbable, however, it might happen, if
a new TransactionActionKind is introduced "out of order" and the
actions[] array is not updated.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
 blockdev.c | 2 ++
 1 file changed, 2 insertions(+)


diff --git a/blockdev.c b/blockdev.c
index 2ab236a..80605a2 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1286,6 +1286,8 @@  void qmp_transaction(TransactionActionList *dev_list, Error **errp)
         assert(dev_info->kind < ARRAY_SIZE(actions));
         ops = &actions[dev_info->kind];
+        assert(ops->instance_size > 0);
         state = g_malloc0(ops->instance_size);
         state->ops = ops;
         state->action = dev_info;