1
0
Fork 0

checkkconfigsymbols: use arglist instead of cmd string

Splitting a command string could lead to unintended arguments.  Use an
argument list in the execute() function instead.

Signed-off-by: Valentin Rothberg <valentinrothberg@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
hifive-unleashed-5.1
Valentin Rothberg 2016-08-28 08:51:32 +02:00 committed by Greg Kroah-Hartman
parent ef3f55438d
commit 2f9cc12bb3
1 changed files with 16 additions and 11 deletions

View File

@ -149,11 +149,11 @@ def main():
undefined_b = {} undefined_b = {}
# get undefined items before the commit # get undefined items before the commit
execute("git reset --hard %s" % commit_a) reset(commit_a)
undefined_a, _ = check_symbols(args.ignore) undefined_a, _ = check_symbols(args.ignore)
# get undefined items for the commit # get undefined items for the commit
execute("git reset --hard %s" % commit_b) reset(commit_b)
undefined_b, defined = check_symbols(args.ignore) undefined_b, defined = check_symbols(args.ignore)
# report cases that are present for the commit but not before # report cases that are present for the commit but not before
@ -170,7 +170,7 @@ def main():
undefined[symbol] = files undefined[symbol] = files
# reset to head # reset to head
execute("git reset --hard %s" % head) reset(head)
# default to check the entire tree # default to check the entire tree
else: else:
@ -202,6 +202,11 @@ def main():
print() # new line print() # new line
def reset(commit):
"""Reset current git tree to %commit."""
execute(["git", "reset", "--hard", commit])
def yel(string): def yel(string):
""" """
Color %string yellow. Color %string yellow.
@ -219,25 +224,25 @@ def red(string):
def execute(cmd): def execute(cmd):
"""Execute %cmd and return stdout. Exit in case of error.""" """Execute %cmd and return stdout. Exit in case of error."""
try: try:
cmdlist = cmd.split(" ") stdout = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=False)
stdout = subprocess.check_output(cmdlist, stderr=subprocess.STDOUT, shell=False)
stdout = stdout.decode(errors='replace') stdout = stdout.decode(errors='replace')
except subprocess.CalledProcessError as fail: except subprocess.CalledProcessError as fail:
exit("Failed to execute %s\n%s" % (cmd, fail)) exit(fail)
return stdout return stdout
def find_commits(symbol, diff): def find_commits(symbol, diff):
"""Find commits changing %symbol in the given range of %diff.""" """Find commits changing %symbol in the given range of %diff."""
commits = execute("git log --pretty=oneline --abbrev-commit -G %s %s" commits = execute(["git", "log", "--pretty=oneline",
% (symbol, diff)) "--abbrev-commit", "-G",
symbol, diff])
return [x for x in commits.split("\n") if x] return [x for x in commits.split("\n") if x]
def tree_is_dirty(): def tree_is_dirty():
"""Return true if the current working tree is dirty (i.e., if any file has """Return true if the current working tree is dirty (i.e., if any file has
been added, deleted, modified, renamed or copied but not committed).""" been added, deleted, modified, renamed or copied but not committed)."""
stdout = execute("git status --porcelain") stdout = execute(["git", "status", "--porcelain"])
for line in stdout: for line in stdout:
if re.findall(r"[URMADC]{1}", line[:2]): if re.findall(r"[URMADC]{1}", line[:2]):
return True return True
@ -246,7 +251,7 @@ def tree_is_dirty():
def get_head(): def get_head():
"""Return commit hash of current HEAD.""" """Return commit hash of current HEAD."""
stdout = execute("git rev-parse HEAD") stdout = execute(["git", "rev-parse", "HEAD"])
return stdout.strip('\n') return stdout.strip('\n')
@ -285,7 +290,7 @@ def find_sims(symbol, ignore, defined=[]):
def get_files(): def get_files():
"""Return a list of all files in the current git directory.""" """Return a list of all files in the current git directory."""
# use 'git ls-files' to get the worklist # use 'git ls-files' to get the worklist
stdout = execute("git ls-files") stdout = execute(["git", "ls-files"])
if len(stdout) > 0 and stdout[-1] == "\n": if len(stdout) > 0 and stdout[-1] == "\n":
stdout = stdout[:-1] stdout = stdout[:-1]