Commit 2f9cc12b authored by Valentin Rothberg's avatar Valentin Rothberg Committed by Greg Kroah-Hartman

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: default avatarValentin Rothberg <valentinrothberg@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ef3f5543
...@@ -149,11 +149,11 @@ def main(): ...@@ -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(): ...@@ -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(): ...@@ -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): ...@@ -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(): ...@@ -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=[]): ...@@ -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]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment