From patchwork Mon May 1 16:16:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 68603 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5FBD23858C2B for ; Mon, 1 May 2023 16:17:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5FBD23858C2B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1682957834; bh=fb2xd7vYU1DYHklAxytBxyluUE/muigURolcPbOXZLk=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=Ol2Lk7TKQe3TzZLd4v+Ifppbw2WsEMWcOcfUc6nhxLmFrhqWnvj0hTDoAdBSOwr+P JD2Dr9ReDVZ1ynn4hbXA0JtEzfvuWx93MWtvXqLbIZrGS1F7ST6KBzZ3/uxQNUtk9A uInPVkCic2tDbXIOB12VLv1LL9y+zDyshBsUnb7c= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) by sourceware.org (Postfix) with ESMTPS id BDD8E385771B for ; Mon, 1 May 2023 16:16:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BDD8E385771B Received: by mail-io1-xd2e.google.com with SMTP id ca18e2360f4ac-763c3429abaso215333139f.1 for ; Mon, 01 May 2023 09:16:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682957809; x=1685549809; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fb2xd7vYU1DYHklAxytBxyluUE/muigURolcPbOXZLk=; b=cjsaYGqyOHjhdMmEUwPhpDHclaCRIsESRoMcUddOKyCGZoXF0uROByghz8HlnlZKSs RdPE53rl0GQHFcXAo+2CFvNQA+Cn+ODatXk4fEbWawDW4++mzfqVFgWlTAjDFwpsQmBh iLdsTs6f0/KEEazTTXe8l1u4vyGIaEYWjxP/f975iao+O63lROg/ob8WbFYVz9izXgd5 nc3perC2GHiQVhv5mlvzzYw3eVWRFvqgHTUrmpLILUyUdM5PBvKS00HhUWBjtHXlLuti KIzwQv87cgeKX000SpaURD7Bc/4arhqnY4shXYuNx2/6WIrIZ1zd7U2y9t/amnQsNNGO oFFg== X-Gm-Message-State: AC+VfDzWU9jHAwIraCLqsjpXdlgpW2VkrhYwy2qUpb5tQzskdZu+883K oEFiOtWiuZcKVzEo8BmhRGGv82xJ54OPg5f0xeJyGQ== X-Google-Smtp-Source: ACHHUZ7fZwGlk9k9Acfdlm1BJzSVcQXs/YCd46SpNIa7UZydRklNlZUlRbLQhzAeSu70o/n0zg91OQ== X-Received: by 2002:a5d:8993:0:b0:763:b459:a701 with SMTP id m19-20020a5d8993000000b00763b459a701mr8784555iol.1.1682957809017; Mon, 01 May 2023 09:16:49 -0700 (PDT) Received: from localhost.localdomain (71-211-191-82.hlrn.qwest.net. [71.211.191.82]) by smtp.gmail.com with ESMTPSA id m21-20020a026a55000000b0040fd29e6253sm8039194jaf.150.2023.05.01.09.16.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 May 2023 09:16:48 -0700 (PDT) To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [pushed] Fix crash in Rust expression parser Date: Mon, 1 May 2023 10:16:41 -0600 Message-Id: <20230501161642.2435886-1-tromey@adacore.com> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tom Tromey via Gdb-patches From: Tom Tromey Reply-To: Tom Tromey Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" A user found that an array expression with just a single value (like "[23]") caused the Rust expression parser to crash. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30410 --- gdb/rust-parse.c | 4 ++-- gdb/testsuite/gdb.rust/expr.exp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gdb/rust-parse.c b/gdb/rust-parse.c index 6c7922de9c7..648e48dda40 100644 --- a/gdb/rust-parse.c +++ b/gdb/rust-parse.c @@ -1190,7 +1190,7 @@ rust_parser::parse_array () result = make_operation (std::move (expr), std::move (rhs)); } - else if (current_token == ',') + else if (current_token == ',' || current_token == ']') { std::vector ops; ops.push_back (std::move (expr)); @@ -1205,7 +1205,7 @@ rust_parser::parse_array () int len = ops.size () - 1; result = make_operation (0, len, std::move (ops)); } - else if (current_token != ']') + else error (_("',', ';', or ']' expected")); require (']'); diff --git a/gdb/testsuite/gdb.rust/expr.exp b/gdb/testsuite/gdb.rust/expr.exp index 4a0a48ade62..908d1a3680b 100644 --- a/gdb/testsuite/gdb.rust/expr.exp +++ b/gdb/testsuite/gdb.rust/expr.exp @@ -113,6 +113,7 @@ gdb_test "ptype \[1,2,3,4\]" "type = \\\[i32; 4\\\]" gdb_test "print \[mut 1,2,3,4\]" " = \\\[1, 2, 3, 4\\\]" gdb_test "print \[1,2 3" "',' or ']' expected" gdb_test "print \[1 2" "',', ';', or ']' expected" +gdb_test "print \[23\]" " = \\\[23\\\]" gdb_test "print b\"hi rust\"" " = b\"hi rust\"" # This isn't rusty syntax yet, but that's another bug -- this is just