Rewrite _check_option() in _sanitise() to be way more efficient and readable.

testing/mmn/mktime_takes_localtime_not_gmtime
Isis Lovecruft 2013-05-27 07:24:31 +00:00
parent f65022500d
commit e52e9001d1
No known key found for this signature in database
GPG Key ID: A3ADB67A2CDB8B35
1 changed files with 47 additions and 39 deletions

View File

@ -490,46 +490,54 @@ def _sanitise(*args):
or (_util._py3k and isinstance(value, str)):
values = value.split(' ')
for v in values:
try:
assert v is not None
assert v.strip() != ""
except:
log.debug("Dropping %s %s" % (flag, v))
continue
## these can be handled separately, without _fix_unsafe(),
## because they are only allowed if the pass the regex
if flag in ['--default-key', '--recipient', '--export',
'--export-secret-keys', '--delete-keys',
'--list-sigs', '--export-secret-subkeys',]:
if _is_hex(v):
safe_option += (v + " ")
continue
else: log.debug("'%s %s' not hex." % (flag, v))
val = _fix_unsafe(v)
if val is not None and val.strip() != "":
try:
assert v is not None
assert v.strip() != ""
except:
log.debug("Dropping %s %s" % (flag, v))
continue
if flag in ['--encrypt', '--encrypt-files', '--decrypt',
'--decrypt-files', '--import', '--verify']:
## Place checks here:
if _util._is_file(val):
safe_option += (val + " ")
else:
log.debug("%s not file: %s" % (flag, val))
elif flag in ['--default-key', '--recipient',
'--export', '--export-secret-keys',
'--delete-keys', '--list-sigs',
'--export-secret-subkeys',]:
if _is_hex(val):
safe_option += (val + " ")
else:
log.debug("'%s %s' not hex." % (flag, val))
elif flag in ['--cipher-algo',
'--personal-cipher-prefs',
if _util._is_file(val): safe_option += (val + " ")
else: log.debug("%s not file: %s" % (flag, val))
elif flag in ['--cipher-algo', '--personal-cipher-prefs',
'--personal-cipher-preferences']:
legit_algos = _check_preferences(val, 'cipher')
if legit_algos:
safe_option += (legit_algos + " ")
else:
log.debug("'%s' is not cipher"
% _fix_unsafe(val))
elif flag in ['--compress-algo',
'--compression-algo',
if legit_algos: safe_option += (legit_algos + " ")
else: log.debug("'%s' is not cipher" % val)
elif flag in ['--compress-algo', '--compression-algo',
'--personal-compress-prefs',
'--personal-compress-preferences']:
legit_algos = _check_preferences(val, 'compress')
if legit_algos:
safe_option += (legit_algos + " ")
else:
log.debug("'%s' not compress algo"
% _fix_unsafe(val))
if legit_algos: safe_option += (legit_algos + " ")
else: log.debug("'%s' not compress algo" % val)
else:
safe_option += (val + " ")
log.debug("_check_option(): No checks for %s"
% val)
log.debug("_check_option(): No checks for %s" % val)
return safe_option
is_flag = lambda x: x.startswith('--')