From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-io1-xd2e.google.com with SMTP id ca18e2360f4ac-763c3429abaso215333139f.1 for ; Mon, 01 May 2023 09:16:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1682957809; x=1685549809; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=fb2xd7vYU1DYHklAxytBxyluUE/muigURolcPbOXZLk=; b=WnlZie/CC45sZexmARRK52MfC/m/NYbr+TRXYr06Y849lRJfH1t7tL+8pc7+QPkpDx FB44LYtQNIEwjxbGTQ1mgmU5PZ0TLil9/qzNX4KCnIGiFzrc2CNvRqi8KHm9MV4kFUkx qLHkbj7XIxRmJyW4KQvMgWhfOD3+oKHYU0TS48wVWUTmF8VzHT8pdc1CQm7Orrq6Tk13 KMbBQAUCjvLEQGWuo3cEonK09Mj4+IYwT8nGiyG3eF51kHck3VkQNpbuTwdXrbEZhN/W m+YuWmQsTCSW7OxupL3B790cxHRdd8N+0PXBGXDQillzxP+sB2EVaSX4C5zi0l4tInz1 zqnA== 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) From: Tom Tromey 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 Content-Transfer-Encoding: 8bit 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 List-Id: 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 -- 2.39.1