From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 102918 invoked by alias); 15 Feb 2017 22:54:55 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 102909 invoked by uid 89); 15 Feb 2017 22:54:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.0 required=5.0 tests=BAYES_20,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=gdb_start, gdb_exit, 0287, Hx-languages-length:3910 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 15 Feb 2017 22:54:44 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E57264D689; Wed, 15 Feb 2017 22:54:44 +0000 (UTC) Received: from localhost (unused-10-15-17-193.yyz.redhat.com [10.15.17.193]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v1FMsi3w009621 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 15 Feb 2017 17:54:44 -0500 From: Sergio Durigan Junior To: Pedro Alves Cc: GDB Patches , Doug Evans Subject: Re: [PATCH] PR gdb/21164: maint print {symbols,msymbols,psymbols} without args crash References: <20170215201548.29225-1-sergiodj@redhat.com> X-URL: http://blog.sergiodj.net Date: Wed, 15 Feb 2017 22:54:00 -0000 In-Reply-To: (Pedro Alves's message of "Wed, 15 Feb 2017 22:12:28 +0000") Message-ID: <87o9y3njyk.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2017-02/txt/msg00426.txt.bz2 On Wednesday, February 15 2017, Pedro Alves wrote: > On 02/15/2017 08:15 PM, Sergio Durigan Junior wrote: > >> This patch fixes that. OK to apply? > > Can you add some tests for this, please? How about this? Thanks -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible http://sergiodj.net/ commit acd6597d63b2501588318466cd308701d09a58f3 Author: Sergio Durigan Junior Date: Wed Feb 15 15:08:19 2017 -0500 PR gdb/21164: maint print {symbols,msymbols,psymbols} without args crash Hi, This is a fix for PR gdb/21164. The problem started to happen after: commit 34c41c681f4a0a0dfe0405c7d2aecf458520557a Author: Doug Evans AuthorDate: Mon Dec 19 08:33:46 2016 -0800 New syntax for mt print symbols,msymbols,psymbols. This change introduced new syntax for the mentioned commands, and improved the parsing of arguments by using 'gdb_buildargv'. However, it is necessary to check if the argv being built is not NULL, which can happen if the user doesn't provide any arguments to these commands. This patch fixes that. OK to apply? gdb/ChangeLog: 2017-02-15 Sergio Durigan Junior PR gdb/21164 * psymtab.c (maintenance_print_psymbols): Verify if 'argv' is not NULL before using it. * symmisc.c (maintenance_print_symbols): Likewise. (maintenance_print_msymbols): Likewise. gdb/testsuite/ChangeLog: gdb/ChangeLog: 2017-02-15 Sergio Durigan Junior PR gdb/21164 * gdb.base/maint.exp: Add testcases for when the commands do not have arguments. diff --git a/gdb/psymtab.c b/gdb/psymtab.c index 1fad8a0..6e42bc5 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -1926,7 +1926,7 @@ maintenance_print_psymbols (char *args, int from_tty) argv = gdb_buildargv (args); cleanups = make_cleanup_freeargv (argv); - for (i = 0; argv[i] != NULL; ++i) + for (i = 0; argv != NULL && argv[i] != NULL; ++i) { if (strcmp (argv[i], "-pc") == 0) { @@ -1967,7 +1967,7 @@ maintenance_print_psymbols (char *args, int from_tty) stdio_file arg_outfile; - if (argv[outfile_idx] != NULL) + if (argv != NULL && argv[outfile_idx] != NULL) { char *outfile_name; diff --git a/gdb/symmisc.c b/gdb/symmisc.c index 07d571a..ab50570 100644 --- a/gdb/symmisc.c +++ b/gdb/symmisc.c @@ -418,7 +418,7 @@ maintenance_print_symbols (char *args, int from_tty) argv = gdb_buildargv (args); cleanups = make_cleanup_freeargv (argv); - for (i = 0; argv[i] != NULL; ++i) + for (i = 0; argv != NULL && argv[i] != NULL; ++i) { if (strcmp (argv[i], "-pc") == 0) { @@ -459,7 +459,7 @@ maintenance_print_symbols (char *args, int from_tty) stdio_file arg_outfile; - if (argv[outfile_idx] != NULL) + if (argv != NULL && argv[outfile_idx] != NULL) { char *outfile_name; @@ -721,7 +721,7 @@ maintenance_print_msymbols (char *args, int from_tty) argv = gdb_buildargv (args); cleanups = make_cleanup_freeargv (argv); - for (i = 0; argv[i] != NULL; ++i) + for (i = 0; argv != NULL && argv[i] != NULL; ++i) { if (strcmp (argv[i], "-objfile") == 0) { @@ -747,7 +747,7 @@ maintenance_print_msymbols (char *args, int from_tty) stdio_file arg_outfile; - if (argv[outfile_idx] != NULL) + if (argv != NULL && argv[outfile_idx] != NULL) { char *outfile_name; diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index 2853508..b87cbfc 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -561,6 +561,14 @@ gdb_expect { #set timeout $oldtimeout +# Testing that the commands work without an argument. For this test, +# we don't need an inferior loaded/running. +# See PR gdb/21164. +gdb_exit +gdb_start +gdb_test_no_output "maint print symbols" +gdb_test_no_output "maint print msymbols" +gdb_test_no_output "maint print psymbols" gdb_exit return 0