From patchwork Mon May 28 09:09:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 10430199 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 21FC760249 for ; Mon, 28 May 2018 09:09:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 10B1528BE1 for ; Mon, 28 May 2018 09:09:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 046ED28BE5; Mon, 28 May 2018 09:09:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E2B0028BE1 for ; Mon, 28 May 2018 09:09:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754127AbeE1JJv (ORCPT ); Mon, 28 May 2018 05:09:51 -0400 Received: from orcrist.hmeau.com ([104.223.48.154]:40916 "EHLO deadmen.hmeau.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754121AbeE1JJv (ORCPT ); Mon, 28 May 2018 05:09:51 -0400 Received: from gondobar.mordor.me.apana.org.au ([192.168.128.4] helo=gondobar) by deadmen.hmeau.com with esmtps (Exim 4.89 #2 (Debian)) id 1fNEA1-0001nD-P1; Mon, 28 May 2018 17:09:49 +0800 Received: from herbert by gondobar with local (Exim 4.89) (envelope-from ) id 1fNEA0-0004ey-UJ; Mon, 28 May 2018 17:09:48 +0800 Date: Mon, 28 May 2018 17:09:48 +0800 From: Herbert Xu To: DASH Mailing List Subject: expand: Fix skipping of command substitution when trimming in evalvar Message-ID: <20180528090948.4ootvfsm4qqt3klk@gondor.apana.org.au> MIME-Version: 1.0 Content-Disposition: inline User-Agent: NeoMutt/20170113 (1.7.2) Sender: dash-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dash@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP When we are trimming an unset variable in evalvar, any embedded command substitution that should have been skipped are not. This can cause them to be evaluated later should there be other command substitutions in the same input word. Signed-off-by: Herbert Xu diff --git a/src/expand.c b/src/expand.c index a8bc142..f9ab160 100644 --- a/src/expand.c +++ b/src/expand.c @@ -810,6 +810,8 @@ record: goto record; } + varlen = 0; + end: if (subtype != VSNORMAL) { /* skip to end of alternative */ int nesting = 1;