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!