Fixes #5032 escape and safely split key options in authorized_keys module

This commit is contained in:
James Tanner 2013-11-25 22:13:42 -05:00
parent d187066339
commit b938554311

View file

@ -177,7 +177,14 @@ def parseoptions(options):
''' '''
options_dict = {} options_dict = {}
if options: if options:
options_list = options.strip().split(",") lex = shlex.shlex(options)
lex.quotes = ["'", '"']
lex.whitespace_split = True
opt_parts = list(lex)
open("/tmp/awx.log", "a").write("opt_parts: %s\n" % opt_parts)
#options_list = options.strip().split(",")
options_list = opt_parts
for option in options_list: for option in options_list:
# happen when there is comma at the end # happen when there is comma at the end
if option == '': if option == '':
@ -187,7 +194,8 @@ def parseoptions(options):
else: else:
arg = option arg = option
val = None val = None
options_dict[arg] = val options_dict[arg] = val.replace('"', '').replace("'", "")
open("/tmp/awx.log", "a").write("options_dict: %s\n" % options_dict)
return options_dict return options_dict
def parsekey(raw_key): def parsekey(raw_key):