On 07/26/2013 06:39 AM, Markus Armbruster wrote:
> Fixes at least the following parser bugs:
> 
> * accepts any token in place of a colon
> 
> * treats comma as optional
> 
> * crashes when closing braces or brackets are missing
> 
> Signed-off-by: Markus Armbruster <[email protected]>
> ---
>  scripts/qapi.py                       | 40 
> ++++++++++++++++++++++++++---------
>  tests/qapi-schema/missing-colon.err   |  1 +
>  tests/qapi-schema/missing-colon.exit  |  2 +-
>  tests/qapi-schema/missing-colon.out   |  3 ---
>  tests/qapi-schema/missing-comma.err   |  1 +
>  tests/qapi-schema/missing-comma.exit  |  2 +-
>  tests/qapi-schema/missing-comma.out   |  3 ---
>  tests/qapi-schema/unclosed-object.err |  2 +-
>  8 files changed, 35 insertions(+), 19 deletions(-)
> 

>  
>      def get_values(self):
>          expr = []
> -        while self.tok != ']':
> +        if self.tok == ']':
> +            self.accept()
> +            return expr
> +        if not self.tok in [ '{', '[', "'" ]:
> +            raise QAPISchemaError(self, 'Expected "{", "[", "]" or string')

JSON allows primitives here, as in [ 1 ]; but I agree that for the
purposes of our schema we will always be taking a string or complex
object whenever we have a list.

Reviewed-by: Eric Blake <[email protected]>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to