Eric Blake <[email protected]> writes:
> On 07/01/2015 02:21 PM, Markus Armbruster wrote:
>> qapi-event.py breaks when you ask for a funny prefix like '@'.
>> Protect it.
>
> Only possible from the command line (not triggered by our makefiles);
> but doesn't hurt.
>
>>
>> Signed-off-by: Markus Armbruster <[email protected]>
>> ---
>> scripts/qapi.py | 6 ++++++
>> 1 file changed, 6 insertions(+)
>
>
>>
>> diff --git a/scripts/qapi.py b/scripts/qapi.py
>> index 2bbc8ff..ea94ce5 100644
>> --- a/scripts/qapi.py
>> +++ b/scripts/qapi.py
>> @@ -1003,6 +1003,12 @@ def parse_command_line(extra_options = "",
>> extra_long_options = []):
>> for oa in opts:
>> o, a = oa
>> if o in ("-p", "--prefix"):
>> + match = re.match('([A-Za-z_.-][A-Za-z0-9_.-]*)?', a)
>
> I can understand allowing a leading _, but why bother allowing a leading
> '.' or '-'? Those will get normalized to _, but in all honesty, no one
> should ever be doing that.
My patch rejects exactly the prefixes that won't work.
> I'd be just as happy with the shorter:
>
> match = re.match('([A-Za-z_][A-Za-z0-9_.-]*)?', a)
This additionally rejects a few rather foolish ones.
I have a slight preference for the tool staying out of policing foolish
prefixes.
>> + if match.end() != len(a):
>> + print >>sys.stderr, \
>> + "%s: 'funny character '%s' in argument of -prefix" \
>
> 'qemu' is unusual for accepting -single-dash-long-opts; I don't think
> python getopts does the same by default. Please spell this error
> message --prefix.
Typo, will fix.
>> + % (sys.argv[0], a[match.end()])
>> + sys.exit(1)
>> prefix = a
>> elif o in ("-o", "--output-dir"):
>> output_dir = a + "/"
>>
>
> With the second spelling fix, and optionally with the shorter regex,
>
> Reviewed-by: Eric Blake <[email protected]>
Thanks!