Luiz Capitulino <lcapitul...@redhat.com> writes: > On Wed, 02 Jun 2010 09:39:26 +0200 > Markus Armbruster <arm...@redhat.com> wrote: > >> Luiz Capitulino <lcapitul...@redhat.com> writes: >> >> > This is similar to qmp_check_client_args(), but checks if >> > the input object follows the specification (QMP/qmp-spec.txt >> > section 2.3). >> > >> > As we're limited to three keys, the work here is quite simple: >> > we iterate over the input object, each time checking if the >> > given argument complies to the specification. >> > >> > Signed-off-by: Luiz Capitulino <lcapitul...@redhat.com> >> > --- >> > monitor.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ >> > 1 files changed, 45 insertions(+), 0 deletions(-) >> > >> > diff --git a/monitor.c b/monitor.c >> > index 1875731..654b193 100644 >> > --- a/monitor.c >> > +++ b/monitor.c >> > @@ -4271,6 +4271,45 @@ static int qmp_check_client_args(const mon_cmd_t >> > *cmd, QDict *client_args) >> > return res.result; >> > } >> > >> > +/* >> > + * Input object checking rules >> > + * >> > + * 1. "execute" key must exist (not checked here) >> > + * 2. "execute" key must be a string >> > + * 3. "arguments" key must be a dict >> > + * 4. "id" key can be anything (ie. json-value) >> >> Really? Checking qmp-spec.txt... yes, really. Is it a good idea to >> permit objects and arrays? > > It was Avi's suggestion to allow anything, maybe arrays don't make sense > but objects do.
If we permit objects, we can just as well permit anything.