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

login
register
mail settings
Submitter Kevin Wolf
Date Sept. 13, 2013, 11:51 a.m.
Message ID <1379073063-14963-33-git-send-email-kwolf@redhat.com>
Download mbox | patch
Permalink /patch/274753/
State New
Headers show

Comments

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
valid.

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(+)

Patch

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;