Eric Blake <ebl...@redhat.com> 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 <arm...@redhat.com>
>> ---
>>  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 <ebl...@redhat.com>

Thanks!

Reply via email to