From patchwork Mon Mar 20 17:03:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 72295 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1326789wrt; Mon, 20 Mar 2023 10:03:30 -0700 (PDT) X-Google-Smtp-Source: AK7set94/kazdPheEa05y5wGNbfoENmueoMIDQMs4Jx++e7+eWi7UceN1qEEv5qzdXxfWCKEU9tA X-Received: by 2002:a05:6402:788:b0:4fd:2aaf:f401 with SMTP id d8-20020a056402078800b004fd2aaff401mr318868edy.5.1679331810169; Mon, 20 Mar 2023 10:03:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679331810; cv=none; d=google.com; s=arc-20160816; b=DTLJQ2T9qt1islS+7S3x64Paw3jbFAlqjvYHUxwQ4pOfbu/eQfhOV1RRYft4Bfrsrf x8j31Snt+oXgrbd4hc4cE+AXlRnny3WUAtbWytXTizHSd6IbjV5Enb4EDJFLH15NS/y2 jf/prHszNL8yblbnCMEJSIP32jAK9APw4pGtCk5wdVgSw9RssXTRV4lS74teDyhcmL8P 5xX0g0h1KhFd5xXblx33scGrsVPJwRa5qfofwanPAN+RebeSQhaI1MuNnbYGxNzCLJcO 9Ak05cBuz8ezbk71thgoGwf9US8JEodZwnmjdy3vWDIsrlpzFSYzgUUejyiNPdtsRnJ1 DkFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:to :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=yKZKhHkyfkGz337HSpjDvc7xlDyrnyHSWfxo5FUBtbI=; b=C/vk3VqPZptgGOt+kNRrz2GXUHPsm8I4oMH6+8EIa1z5KZU8VwQnXYwY6ttBbLBIzT m0rQS694TLKAt6ugSl4SpiKeNM5/sh37JFtwD1fc4gGHuS0UkXduWkXSHoABc5Y5FsoV JPFrAnHj4Qa0J+6Y18e8BvRIC6NhTjDxZQASSGB+EdlEuMo9h0HyXcYn6Zmr6oT52ehE mwlSjVuQaG2jICm245I5xHm+342wm9VwVB50dRlU6z7mgoNynHpY0TqCkU4nHElSVGdW /39N+Tr2MtR76+KWjmSIL5VWJvBIMoMdGhQBGaodo3a03daWdMBk9cnWmLCrwoMkHdht EO2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=QMysj3To; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id n20-20020aa7c694000000b004fd2b167e9fsi7593405edq.20.2023.03.20.10.03.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 10:03:30 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=QMysj3To; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 36195385084E for ; Mon, 20 Mar 2023 17:03:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 36195385084E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1679331809; bh=yKZKhHkyfkGz337HSpjDvc7xlDyrnyHSWfxo5FUBtbI=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=QMysj3TozD8kQdjF9Qxr/mQ3iYnMMwmmqmYob9QmqD2UZX+ONNNZKBl8oRpaQG3W/ +zWYb2Jf2Z6XKTAgFn+fnLeHcwK28l6P8ISNs/SLbTxaXcpPLb7AhbvFiAKt9Vxh7A olFqIHHDv0dy8LA0g9Q3gP7cyXYao0UXB0NfYxkY= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by sourceware.org (Postfix) with ESMTPS id 85C513858413 for ; Mon, 20 Mar 2023 17:03:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 85C513858413 Received: by mail-pj1-x1033.google.com with SMTP id p3-20020a17090a74c300b0023f69bc7a68so8634182pjl.4 for ; Mon, 20 Mar 2023 10:03:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679331795; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yKZKhHkyfkGz337HSpjDvc7xlDyrnyHSWfxo5FUBtbI=; b=2KOox2PRVAV9z7ffcKtBqwHqK+KKU2/lJVbFs+AKhoD3ZVFZNsTHCE++Y+YUwzC42j iy4jcXiEnBQFOBr4cGSVxr3WuGQEpfdK6bqYOiOVAxs/MUyIpmUcd3MLjbQGHvNtI+o2 Zpswe5Zb9u+hunKvLBG7Rq19tmrU8+3J0m2P2AK4qWishO911SjM9U0+CA/fGRsRWIwH tbuUtbIFDiv51Eeqn+J8abDGWR2633T5Uui9Vh8a7MwCBEAiIFHBptfVVhQxO2fWsvda kn5K0ehUe5NRdraP2SKJ4JC7OXi0rcJ8ywuBZhvHSJ080mS/r/gyMwI/tNHPQWl8Tb9X QCXQ== X-Gm-Message-State: AO0yUKWS7uzwD+ssefPb6eQtcJtXKLpp2UL5qZUs9NN5Rc3UGalBPW7o /9x/bMxK6R5AdC7mbvVijfS77ZUPrxs= X-Received: by 2002:a17:902:f10b:b0:1a0:7678:5e16 with SMTP id e11-20020a170902f10b00b001a076785e16mr13918857plb.67.1679331794962; Mon, 20 Mar 2023 10:03:14 -0700 (PDT) Received: from gnu-cfl-3.localdomain ([172.59.161.113]) by smtp.gmail.com with ESMTPSA id y17-20020a170902b49100b0019f114570b0sm6085850plr.152.2023.03.20.10.03.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 10:03:14 -0700 (PDT) Received: from gnu-cfl-3.. (localhost [IPv6:::1]) by gnu-cfl-3.localdomain (Postfix) with ESMTP id 68E7A740067 for ; Mon, 20 Mar 2023 10:03:13 -0700 (PDT) To: binutils@sourceware.org Subject: [PATCH] x86: Check unbalanced braces in memory reference Date: Mon, 20 Mar 2023 10:03:13 -0700 Message-Id: <20230320170313.354203-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-Spam-Status: No, score=-3025.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Binutils" From: "H.J. Lu" Reply-To: "H.J. Lu" Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760907032077981709?= X-GMAIL-MSGID: =?utf-8?q?1760907032077981709?= Check unbalanced braces in memory reference to avoid assembler crash caused by commit e87fb6a6d0cdfc0e9c471b7825c20c238c2cf506 Author: Jan Beulich Date: Wed Oct 5 09:16:24 2022 +0200 x86/gas: support quoted address scale factor in AT&T syntax PR gas/30248 * config/tc-i386.c (i386_att_operand): Check unbalanced braces in memory reference. * testsuite/gas/i386/i386.exp: Run pr30248. * testsuite/gas/i386/pr30248.d: New file. * testsuite/gas/i386/pr30248.err: Likewise. * testsuite/gas/i386/pr30248.s: Likewise. --- gas/config/tc-i386.c | 6 +++++- gas/testsuite/gas/i386/i386.exp | 1 + gas/testsuite/gas/i386/pr30248.d | 2 ++ gas/testsuite/gas/i386/pr30248.err | 5 +++++ gas/testsuite/gas/i386/pr30248.s | 2 ++ 5 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 gas/testsuite/gas/i386/pr30248.d create mode 100644 gas/testsuite/gas/i386/pr30248.err create mode 100644 gas/testsuite/gas/i386/pr30248.s diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index ed8329f25d8..44efad73e5d 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -11613,7 +11613,11 @@ i386_att_operand (char *operand_string) temp_string = base_string; /* Skip past '(' and whitespace. */ - gas_assert (*base_string == '('); + if (*base_string != '(') + { + as_bad (_("unbalanced braces")); + return 0; + } ++base_string; if (is_space_char (*base_string)) ++base_string; diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 590cd783efe..4d2150f9c68 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -752,6 +752,7 @@ run_dump_test pr19498 run_list_test "nop-bad-1" "" run_list_test "unspec" "" run_dump_test "fp" +run_dump_test pr30248 if {[is_elf_format] || [istarget "*-*-vxworks*"]} then { run_list_test_stdin "list-1" "-al" run_list_test_stdin "list-2" "-al" diff --git a/gas/testsuite/gas/i386/pr30248.d b/gas/testsuite/gas/i386/pr30248.d new file mode 100644 index 00000000000..a6efd26e2c5 --- /dev/null +++ b/gas/testsuite/gas/i386/pr30248.d @@ -0,0 +1,2 @@ +#as: +#error_output: pr30248.err diff --git a/gas/testsuite/gas/i386/pr30248.err b/gas/testsuite/gas/i386/pr30248.err new file mode 100644 index 00000000000..1f71543e1d4 --- /dev/null +++ b/gas/testsuite/gas/i386/pr30248.err @@ -0,0 +1,5 @@ +#failif + +#... +.*Internal error.* +#pass diff --git a/gas/testsuite/gas/i386/pr30248.s b/gas/testsuite/gas/i386/pr30248.s new file mode 100644 index 00000000000..ab875008f3d --- /dev/null +++ b/gas/testsuite/gas/i386/pr30248.s @@ -0,0 +1,2 @@ + .text + lgs ")"""