From patchwork Sun Feb 25 20:46:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Georg Sauthoff X-Patchwork-Id: 26051 Received: (qmail 125854 invoked by alias); 25 Feb 2018 20:46:13 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 125824 invoked by uid 89); 25 Feb 2018 20:46:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY autolearn=ham version=3.3.2 spammy=H*F:U*mail, Hx-languages-length:2373 X-HELO: escher.lru.li Received: from escher.lru.li (HELO escher.lru.li) (217.146.132.159) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 25 Feb 2018 20:46:09 +0000 Received: from dell12.lru.li (unknown [IPv6:2001:1a80:303a:0:faca:b8ff:fe50:d072]) (Authenticated sender: georg) by escher.lru.li (Postfix) with ESMTPSA id ACE018118ACF; Sun, 25 Feb 2018 21:46:06 +0100 (CET) Received: by dell12.lru.li (Postfix, from userid 1000) id A316D1C331B; Sun, 25 Feb 2018 21:46:06 +0100 (CET) From: Georg Sauthoff To: gdb-patches@sourceware.org Cc: Georg Sauthoff Subject: [PATCH] Improve gcore shell quoting and portability Date: Sun, 25 Feb 2018 21:46:01 +0100 Message-Id: <20180225204601.19068-1-mail@georg.so> The gcore shell script (gdb/gcore.in) doesn't quote its variables enough. For example, trying to write a core file with - say - a space ungraciously fails like this: $ gcore -o 'foo bar' 6270 /usr/bin/gcore: line 92: [: foo: binary operator expected gcore: failed to create foo bar.6270 Similarly, one can inject meta characters like * (by accident) that may yield unexpected results, e.g. as in: $ gcore -o foobar '*' This change fixes these issues in several places. Aso, since the script uses array syntax, the patch changes the the shell in the first line from `/bin/sh` to /bin/bash`. POSIX doesn't specify the array syntax for shell, thus, the script doesn't work on systems where /bin/sh is linked to - say - dash. Since the source gcore.in already is processed by a pre-processor one could even auto-detect the path to bash and thus dynamically generate the first line. For systems where bash isn't available via /bin/bash. But I think this would be overkill and /bin/bash is good enough as most systems probably have it. gdb/ChangeLog: PR gdb/22888 * gcore.in: quote variables and switch interpreter to bash --- gdb/gcore.in | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gdb/gcore.in b/gdb/gcore.in index b7f57cd3..816c5629 100644 --- a/gdb/gcore.in +++ b/gdb/gcore.in @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Copyright (C) 2003-2018 Free Software Foundation, Inc. @@ -28,9 +28,9 @@ name=core dump_all_cmds=() while getopts :ao: opt; do - case $opt in + case "$opt" in a) - case $OSTYPE in + case "$OSTYPE" in linux*) dump_all_cmds=("-ex" "set use-coredump-filter off") dump_all_cmds+=("-ex" "set dump-excluded-mappings on") @@ -93,16 +93,16 @@ fi rc=0 # Loop through pids -for pid in $* +for pid in "$@" do # `