From 59d74e2be6116d35a5433a214969c46d1d8be121 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Tue, 23 May 2017 14:55:10 +0200 Subject: [PATCH] improve bad CLI argument handling of crypto.py --- deltatar/crypto.py | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) diff --git a/deltatar/crypto.py b/deltatar/crypto.py index f8573db..bd87763 100755 --- a/deltatar/crypto.py +++ b/deltatar/crypto.py @@ -1560,6 +1560,13 @@ def parse_argv (argv): except KeyError: bail ("ERROR: invalid subcommand “%s” specified" % rawsubcmd) + def checked_arg (): + nonlocal argvi + try: + return next (argvi) + except StopIteration: + bail ("ERROR: argument list incomplete") + def checked_secret (t, arg): nonlocal secret if secret is None: @@ -1575,13 +1582,13 @@ def parse_argv (argv): global PDTCRYPT_VERBOSE PDTCRYPT_VERBOSE = True elif arg in [ "-i", "--in", "--source" ]: - insspec = next (argvi) + insspec = checked_arg () if PDTCRYPT_VERBOSE is True: noise ("PDT: decrypt from %s" % insspec) elif arg in [ "-o", "--out", "--dest", "--sink" ]: - outsspec = next (argvi) + outsspec = checked_arg () if PDTCRYPT_VERBOSE is True: noise ("PDT: decrypt to %s" % outsspec) elif arg in [ "-p", "--password" ]: - arg = next (argvi) + arg = checked_arg () checked_secret (PDTCRYPT_SECRET_PW, arg) if PDTCRYPT_VERBOSE is True: noise ("PDT: decrypting with password") else: @@ -1600,7 +1607,7 @@ def parse_argv (argv): mode &= ~PDTCRYPT_DECRYPT if PDTCRYPT_VERBOSE is True: noise ("PDT: not decrypting") elif arg in [ "-k", "--key" ]: - arg = next (argvi) + arg = checked_arg () checked_secret (PDTCRYPT_SECRET_KEY, arg) if PDTCRYPT_VERBOSE is True: noise ("PDT: decrypting with key") else: -- 1.7.1