From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6657041487194226688 X-Received: by 2002:adf:ff92:: with SMTP id j18mr297846wrr.3.1549990630186; Tue, 12 Feb 2019 08:57:10 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a7b:c059:: with SMTP id u25ls127265wmc.9.canary-gmail; Tue, 12 Feb 2019 08:57:09 -0800 (PST) X-Google-Smtp-Source: AHgI3IYerB+MjD7kHRZupbNAhdxqV1X81zfthiICS3QCXF6gLLpiCVWFaG6tYZCCuLc3icJeN5+/ X-Received: by 2002:a7b:cb02:: with SMTP id u2mr347365wmj.6.1549990629789; Tue, 12 Feb 2019 08:57:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549990629; cv=none; d=google.com; s=arc-20160816; b=M+/rHjNX35x6uzLQQh61FpCBgPO1xjsqMdgKZ0qIXwLlW0vg/pBrWp+11A6OTOay5r 4QwjdgQ5eylIcgrmeCLeOAwFP3AKX3Huaj/mmZYTZIUvEuqgQb0891vPBEtgy2jmCKDZ Wu9niGdR7pWPXQpw5zABxTfIteDEE99mHSrapFE0aCo6Q7VELdkxh575ajPiYw24m5hs K+dayo52Z/BRwG1Xmb66IjJaJfobeCO7rRrXst63pOaN4xT+gqH9pxq2I6GYAn6WyUdA c2A0mZRC7Fw5HY4oQ+jcxQNlHnUAp97AjIVHY7PMfqXH/cu4f1vYVd9XyG8NPM+q42jq 5rxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=V4DlGLS5y84lsGMZWMX9KwjVvDmTOfAP1GETzAK0ie8=; b=ywN3bgP2ZJQzVvVgPu7UmwmeStX0o7YLLuQz8MwVtXeIOIRRcE0c6bZ4ivmrEmlsvI CnMWQ7looWWwECGz/resZexn3RMiOuLNBOaDku8gXG6DNXFn4Tp6jQxQ9xE8WVoB7ilK VWbWwvn3pTPT0x0sjsb2YSiIRT9fjrAdOFA/VqEh6Uon4S2Z0YtHR1ssqbkfBbMBHZtz qCJ5HLHQDsf9smUMXEHhoChGF7gLetl8Nnb7pibeJSiEsGJiWz5Rb0KfncjCdm9FMuho QmCnt4C4ywmMWe9MGafoOIcmWK2rXncKXpCPbElHnOfEeiunRZa5cqM2NyoQZeIvsVUT 0dkA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by best guess record for domain of hws@denx.de) smtp.mailfrom=hws@denx.de Return-Path: Received: from mail-out.m-online.net (mail-out.m-online.net. [212.18.0.9]) by gmr-mx.google.com with ESMTPS id t2si503717wrn.3.2019.02.12.08.57.09 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Feb 2019 08:57:09 -0800 (PST) Received-SPF: neutral (google.com: 212.18.0.9 is neither permitted nor denied by best guess record for domain of hws@denx.de) client-ip=212.18.0.9; Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by best guess record for domain of hws@denx.de) smtp.mailfrom=hws@denx.de Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 43zTN54988z1rV0J; Tue, 12 Feb 2019 17:57:09 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 43zTN53y5Hz1r2Gy; Tue, 12 Feb 2019 17:57:09 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id fA27RRH1eXeu; Tue, 12 Feb 2019 17:57:08 +0100 (CET) X-Auth-Info: 76NpqpVoIFqDNNA2n5LGsXTrv/T1Wg4pNpphQbZXQlk= Received: from sandvich.fritz.box (p578a821c.dip0.t-ipconnect.de [87.138.130.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Tue, 12 Feb 2019 17:57:08 +0100 (CET) From: Harald Seiler To: isar-users@googlegroups.com Cc: Claudius Heine Subject: [PATCH v2 1/5] Remove all uses of subprocess.call(shell=True) Date: Tue, 12 Feb 2019 17:56:33 +0100 Message-Id: <20190212165637.19970-2-hws@denx.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190212165637.19970-1-hws@denx.de> References: <20190212165637.19970-1-hws@denx.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: Y/3CbQSTos6D Using shell-expansion in subprocess calls has a lot of nasty side-effects that are hard to debug should one ever surface. This commit changes all uses of subprocess to A) not use shell=True by giving a list of args instead of a command-line. B) ensure return-codes are handled appropriately. Furthermore, in some places the subprocess usage was changed to be more idiomatic. Co-authored-by: Claudius Heine Signed-off-by: Harald Seiler --- meta/classes/base.bbclass | 10 ++++++---- meta/classes/image.bbclass | 5 +++-- meta/classes/isar-bootstrap-helper.bbclass | 8 +++----- meta/classes/isar-events.bbclass | 13 +++++++------ meta/classes/patch.bbclass | 13 +++++++++---- 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 6ca93bf..6fcf452 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -170,15 +170,17 @@ addtask clean do_clean[nostamp] = "1" python do_clean() { import subprocess + import glob for f in (d.getVar('CLEANFUNCS', True) or '').split(): bb.build.exec_func(f, d) - dir = d.expand("${WORKDIR}") - subprocess.call('sudo rm -rf ' + dir, shell=True) + workdir = d.expand("${WORKDIR}") + subprocess.check_call(["sudo", "rm", "-rf", workdir]) - dir = "%s.*" % bb.data.expand(d.getVar('STAMP', False), d) - subprocess.call('sudo rm -rf ' + dir, shell=True) + stamppath = bb.data.expand(d.getVar('STAMP', False), d) + stampdirs = glob.glob(stamppath + ".*") + subprocess.check_call(["sudo", "rm", "-rf"] + stampdirs) } # Derived from OpenEmbedded Core: meta/classes/base.bbclass diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index be00817..a687662 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -35,8 +35,9 @@ def get_rootfs_size(d): import subprocess rootfs_extra = int(d.getVar("ROOTFS_EXTRA", True)) - output = subprocess.check_output(['sudo', 'du', '-s', '--block-size=1k', - d.getVar("IMAGE_ROOTFS", True)]) + output = subprocess.check_output( + ["sudo", "du", "-s", "--block-size=1k", d.getVar("IMAGE_ROOTFS", True)] + ) base_size = int(output.split()[0]) return base_size + rootfs_extra * 1024 diff --git a/meta/classes/isar-bootstrap-helper.bbclass b/meta/classes/isar-bootstrap-helper.bbclass index d780b85..18081a0 100644 --- a/meta/classes/isar-bootstrap-helper.bbclass +++ b/meta/classes/isar-bootstrap-helper.bbclass @@ -9,11 +9,9 @@ IMAGE_TRANSIENT_PACKAGES ??= "" def get_deb_host_arch(): import subprocess - host_arch = subprocess.Popen("dpkg --print-architecture", - shell=True, - env=os.environ, - stdout=subprocess.PIPE - ).stdout.read().decode('utf-8').strip() + host_arch = subprocess.check_output( + ["dpkg", "--print-architecture"] + ).strip() return host_arch #Debian Distribution for SDK host diff --git a/meta/classes/isar-events.bbclass b/meta/classes/isar-events.bbclass index c4a6149..a178d05 100644 --- a/meta/classes/isar-events.bbclass +++ b/meta/classes/isar-events.bbclass @@ -16,13 +16,14 @@ python isar_handler() { basepath = tmpdir + '/work/' - with open(os.devnull, 'w') as devnull: - with open('/proc/mounts', 'rU') as f: - lines = f.readlines() - for line in lines: + with open('/proc/mounts') as f: + for line in f.readlines(): if basepath in line: - subprocess.call('sudo umount -l ' + line.split()[1], - stdout=devnull, stderr=devnull, shell=True) + subprocess.call( + ["sudo", "umount", "-l", line.split()[1]], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) } isar_handler[eventmask] = "bb.runqueue.runQueueExitWait bb.event.BuildCompleted" diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass index 0bc449f..c19542d 100644 --- a/meta/classes/patch.bbclass +++ b/meta/classes/patch.bbclass @@ -21,10 +21,15 @@ python do_patch() { striplevel = fetcher.ud[src_uri].parm.get("striplevel") or "1" - cmd = "patch --no-backup-if-mismatch -p " + striplevel + \ - " --directory " + src_dir + " --input " + workdir + basename - bb.note(cmd) - if subprocess.call(cmd, shell=True) != 0: + cmd = [ + "patch", + "--no-backup-if-mismatch", + "-p", striplevel, + "--directory", src_dir, + "--input", workdir + basename, + ] + bb.note(" ".join(cmd)) + if subprocess.call(cmd) != 0: bb.fatal("patching failed") except bb.fetch2.BBFetchException as e: raise bb.build.FuncFailed(e) -- 2.14.1