diff options
author | Mikko Rapeli <mikko.rapeli@bmw.de> | 2017-06-01 18:51:33 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-06-05 09:19:51 +0100 |
commit | bc9c714e8b0cccfc60aea4ad1be3a0666427a401 (patch) | |
tree | 78afa11a81e230dcfa2d996cf4c9a704a43cc699 /bitbake | |
parent | ca68d71ddc2e3ffc92d6215345a5909b688cc325 (diff) | |
download | poky-bc9c714e8b0cccfc60aea4ad1be3a0666427a401.tar.gz |
bitbake: bitbake: Fix return value checks from subprocess.call()'s
Python function subprocess.call() returns the return value of the
executed process. If return values are not checked, errors may
go unnoticed and bad things can happen.
Change all callers of subprocess.call() which do not check for
the return value to use subprocess.check_call() which raises
CalledProcessError if the subprocess returns with non-zero value.
https://docs.python.org/2/library/subprocess.html#using-the-subprocess-module
All users of the function were found with:
$ git grep "subprocess\.call" | \
egrep -v 'if.*subprocess\.call|=\ +subprocess\.call|return.*subprocess\.call'
Tested similar patch on top of yocto jethro. Only compile tested
core-image-minimal on poky master branch.
(Bitbake rev: d2cf67bcaf001acb6be8fc5884fb450649849847)
Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/ui/ncurses.py | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/utils.py | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/bitbake/lib/bb/ui/ncurses.py b/bitbake/lib/bb/ui/ncurses.py index d81e4138ba..ca845a32ad 100644 --- a/bitbake/lib/bb/ui/ncurses.py +++ b/bitbake/lib/bb/ui/ncurses.py | |||
@@ -297,7 +297,7 @@ class NCursesUI: | |||
297 | # bb.error("log data follows (%s)" % logfile) | 297 | # bb.error("log data follows (%s)" % logfile) |
298 | # number_of_lines = data.getVar("BBINCLUDELOGS_LINES", d) | 298 | # number_of_lines = data.getVar("BBINCLUDELOGS_LINES", d) |
299 | # if number_of_lines: | 299 | # if number_of_lines: |
300 | # subprocess.call('tail -n%s %s' % (number_of_lines, logfile), shell=True) | 300 | # subprocess.check_call('tail -n%s %s' % (number_of_lines, logfile), shell=True) |
301 | # else: | 301 | # else: |
302 | # f = open(logfile, "r") | 302 | # f = open(logfile, "r") |
303 | # while True: | 303 | # while True: |
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index 077fddc0ee..6a44db57d7 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
@@ -680,7 +680,7 @@ def remove(path, recurse=False): | |||
680 | if _check_unsafe_delete_path(path): | 680 | if _check_unsafe_delete_path(path): |
681 | raise Exception('bb.utils.remove: called with dangerous path "%s" and recurse=True, refusing to delete!' % path) | 681 | raise Exception('bb.utils.remove: called with dangerous path "%s" and recurse=True, refusing to delete!' % path) |
682 | # shutil.rmtree(name) would be ideal but its too slow | 682 | # shutil.rmtree(name) would be ideal but its too slow |
683 | subprocess.call(['rm', '-rf'] + glob.glob(path)) | 683 | subprocess.check_call(['rm', '-rf'] + glob.glob(path)) |
684 | return | 684 | return |
685 | for name in glob.glob(path): | 685 | for name in glob.glob(path): |
686 | try: | 686 | try: |