qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 08/16] qapi: Fix to reject stray 't', 'f' and 'n


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH 08/16] qapi: Fix to reject stray 't', 'f' and 'n'
Date: Tue, 16 Jun 2015 10:31:36 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Eric Blake <address@hidden> writes:

> On 06/12/2015 08:51 AM, Markus Armbruster wrote:
>> Screwed up in commit e53188a.
>> 
>
> And partly my fault for taking a patch written in python by someone
> else, without being a python guru myself.  :)
>
>> Signed-off-by: Markus Armbruster <address@hidden>
>> ---
>>  scripts/qapi.py | 26 ++++++++++++--------------
>>  1 file changed, 12 insertions(+), 14 deletions(-)
>> 
>
> Is it worth a testsuite enhancement to expose this?

Four existing tests trigger the same error message:

* bad-type-int.err enum-int-member.err

  Only because we neglect to parse numbers.

* escape-outside-string.err funny-char.err

  These test stray '\' and ';'.

I guess a separate test covering bad literal names would be useful if we
actually do something different there.

>> +            elif self.src.startswith("true", self.pos):
>> +                self.val = True
>> +                self.cursor += 3
>> +                return
>> +            elif self.src.startswith("false", self.pos):
>
> We still parse things like bare 'truest' as the token 'true'
> concatenated with the nonsense 'st', which is probably not the nicest of
> error messages, but the chances of someone mistyping bare words is not
> worth making it more robust.
>
> Reviewed-by: Eric Blake <address@hidden>

What regular expression should the lexer consume for a literal name?

My patch consumes (true|false|null).

For what it's worth, qobject/json-{lexer,parser}.c consume [a-z]+, then
reject anything but true, false, null.  Lexes false0 as two tokens
JSON_KEYWORD false and JSON_INTEGER 0.  Can't find a context where the
parser accepts that pair.  It rejects it with its usual garbage error
message "Invalid JSON syntax".



reply via email to

[Prev in Thread] Current Thread [Next in Thread]