From patchwork Fri Oct 14 20:25:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 16517 Received: (qmail 38345 invoked by alias); 14 Oct 2016 20:26:05 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 38336 invoked by uid 89); 14 Oct 2016 20:26:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 spammy=unrecognized, Argument, Hx-languages-length:2676, hey X-HELO: sessmg22.ericsson.net Received: from sessmg22.ericsson.net (HELO sessmg22.ericsson.net) (193.180.251.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 14 Oct 2016 20:25:55 +0000 Received: from ESESSHC021.ericsson.se (Unknown_Domain [153.88.183.81]) by (Symantec Mail Security) with SMTP id 10.12.02458.F4F31085; Fri, 14 Oct 2016 22:25:52 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.81) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Oct 2016 22:25:51 +0200 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from elxcz23q12-y4.dyn.mo.ca.am.ericsson.se (192.75.88.130) by AMSPR07MB389.eurprd07.prod.outlook.com (10.242.22.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.679.5; Fri, 14 Oct 2016 20:25:50 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH] Fix -trace-save crash when argument is missing Date: Fri, 14 Oct 2016 16:25:36 -0400 Message-ID: <20161014202536.21670-1-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: BL2PR20CA0001.namprd20.prod.outlook.com (10.167.113.139) To AMSPR07MB389.eurprd07.prod.outlook.com (10.242.22.11) X-MS-Office365-Filtering-Correlation-Id: 41cbf3f2-4103-4558-f611-08d3f4704a40 X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 2:JNZb1Lisvz8jBx7jnaBmsuELGoI1SUgUtQu6Ygd5WL1v2ztNlaI3H0M3Q94Larrdq+n44mq7Rif9mhaROwAqdbR9uj5LOa+TLVK2iWvK2LOzuHrkSMFGkgX0mt9LO+qcvNwnvplahr26gCaVYTW/PlIHsi4mRhJ5QE6fkkeB0/PAwfZ5SZWwwDQpsBmuz+w51kKPkO1BzsQ7aLRWiPpb9w==; 3:Qd2gkmyWEKg737EymZGnl6gjDtJgEcmaYOz2yEunrUfk7YBEpA9lzkbeldDgFJVuhsGBW5m7hnqcbB/NzuhYq8ojHFhxfsgNSXC+qVKAq2esX9g9IDgsA+tHGsdoS2rvUBffrizeN7WSSSG0JfgPCQ==; 25:OD4YiGeLFXk68Nh8oXFGbg5uyi4gJ+VOrU3L1CJ+DlqlXLjLBJOwCQcuDtXKMVy6P8sEvso/hSrXlOHH/hfEhJUtbyXJgFZ3+78D0A5nx/3uG5TkgNCj4NyhWL0F0mMoJ+KtJA0Tk8UHwRvnPeDbEsfO5NQqrFDaEDMr9ySoj7QzwJwlHBK3N5kC2DkvqzKbmtS9p91RRN1DRraYKYg2303sS9rrqXPXhV5bapAag8ENtk2Ci5q48JJQCyauv9zgrx5fNm4UVjbbtIOs7p2wukausZtEaPnKWzj7S/PDquQqDwkyNiHcv+BLmC/3R4fXVoe6WQWOZ2pJU9cYU1CtN1s9AfMcL23ow7RBY9Kpfm3sK6QbIK0495NcDVk+WpbhF2gQB02mV8X/cQsK+NXyKXnBMD9yV9R7rs6E6KAwtQ5DPfQQYsFQasMFiHRNrDzf X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AMSPR07MB389; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 31:e4MYZgwQ9ZerjanwKOia3Vcqc66XWjmRrbqryUo78Zlk4WYzyvgH6WPOQsbON8W3u7D2RAMSHvoQkC5GUrowmE36jZooAyY+IQ/92U/cnt1rcLVmYFzSiANwqHnbmuKHikFd9rsUcPmBKmrwqCd5L98e72NbNmXcNjqxZoz32rMsz0B7SnCXbpeQhj0OVeBYIT8O3zlyg2hrKMVLECsZgDKuYeUkSPZpKoQHDVf3hplAxJkv2Cr4FT2heKNDQ3RKL7z3u+5zruTJGwYRjTngSQ==; 20:z4ga5IX2T0+LeJTD2dv3JT1qAC17kSqax+x8p5qgcF9niej9zYA6sl/1En2961WJbYsa1niV1vFkLJNFiGEN2NklFAlOuPj0D5V8lQy+QG7UBShgM0AAnSDIU4yAn0VILcneeUu/uXYqTB4x47MRZRzCjAOMl1KQDfPbrH+CtQdiPu14yfUBJCEbRmcGgNZ8pmLfLSVWwEd8CHWToVIiVeg79P2RpoEUCMeTQ5H2Ptfcp+YR45KkG2kXYDme7G1siT2bTvIxi0emxN8NBKbFezMZLB3CIBO23gJ6YImIlYbAQlwPMJZkwChXjF2Ip21zQTK3f3hjr8olpdoLJwZQkh2LNUKvbmuRjReDunwcxcL0rxwJijNEY2H5E3XgT9hS7+JplYUucLYz0ypNQEVgv5aAoKKZQTS9T1pVK+iedG1R3X3qFiih18Nko7zHLDjOzHwxlPV1yDDKn8NCx8xCkdJHCDLGKVm3V1ZK6HlBdPEYRFZW84hXgFRX97/95ZBT X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001); SRVR:AMSPR07MB389; BCL:0; PCL:0; RULEID:; SRVR:AMSPR07MB389; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 4:pootJOgwifePwOffdCHuV6cXhUsGYuZX9EuyPKZCFIyakOoVKBX1hP9PEcrC2d9BLAvMxbbKR8c7EGsf7ojoYyqlO9SwMjwMyd8yAp8pgD9goZfaOENamdpw2MMc2IqTovGWQfSADwnUdZKDXzROCQt5t5UoVEncJvg7BCvRZRpofuYy264B7X2tpx0H84yYrRnmHa3oNLl4b+GoqvqX5zmtN2jY5ZzlgKorSB5UOBN8UcCUqgtmoKI++qJ9p54sUJSruIpP7fdRqc0kf+9fzX0ccyHohwbbqxtS3p3JwlvbD3IoAXbqF/v/+uT4kmuDbTt0Kn7ypLfX1JrBgW3IGtR6s7Cr6NCjwUeMECV1yM8gcA/Ikap/RtNQ3qf3hkXesUK1XaNBmBApW6WQrvWn3QcyzU7MXNpJSrSNedgAenwO/2BJyCERw79BgLcE8vQBHZ02Bskzo7En3J1HE/CuiQHDGz+Bo9yiw8m9XLyYOFY= X-Forefront-PRVS: 0095BCF226 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(54534003)(199003)(305945005)(33646002)(110136003)(107886002)(5660300001)(189998001)(42186005)(2906002)(97736004)(6666003)(6916009)(8676002)(81166006)(81156014)(7846002)(5003940100001)(92566002)(36756003)(86362001)(15975445007)(450100001)(3846002)(6116002)(586003)(1076002)(7736002)(47776003)(48376002)(229853001)(2351001)(50466002)(66066001)(106356001)(105586002)(50986999)(50226002)(4001430100002)(68736007)(19580395003)(101416001)(4326007)(77096005)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:AMSPR07MB389; H:elxcz23q12-y4.dyn.mo.ca.am.ericsson.se; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AMSPR07MB389; 23:IkEFHZhUx/CfLG9JgOiDPc+zfDVYdASa5IkhJhStsl?= =?us-ascii?Q?pKwthWqUnf3Klh+fdG61PzA+Bo6Tyxo7cHwo7kkEXpCVoeB/5QsGY+CDEOt4?= =?us-ascii?Q?spRLr6B5TTozgg5maATZeMUIB948FZaZmy18Iv4EOVucDMINXQe9vdssrASQ?= =?us-ascii?Q?ersJxES9uBZRsoz2TZuSmkF+zVLAQyDpE5dZKKjZW4to8Qqbqi1FfSbKb22i?= =?us-ascii?Q?yp47/lJWfM+YkjZtpdvLAj1seH+1UcEJan1pBi1+awFBVMIYTjv3cfL+aZy0?= =?us-ascii?Q?wTyb8TKJ4fJlUHlmhGo2//1RMH1s3soJHWfE+IdzbIOecGZEfxuTJknmexWv?= =?us-ascii?Q?e3bTUdj2GPbbGzhWtOZjPss4qV2iT3c/g5HL1jEJvCR41xg9LYfavLWqtWFh?= =?us-ascii?Q?cqMWh5YIG3u2QOwRSmU7YiBApeY2FTjnnO3yu3TS525xj165lTlnSJTYqvsO?= =?us-ascii?Q?+UPc8suwLUzxpBkUxbBMge4TPDxjorF0JpPHZ7klNPgbNu+j6XVGfaeYzWLw?= =?us-ascii?Q?e8NJLpfPcJhUzloW8jmy5Tk87IXwQl5iMS5gJTMFwKEpFoRho4DpuePQD1AW?= =?us-ascii?Q?eBEhqTJWbnIDq3wMUt8szFSfxwaOeXvyRhD7Q3H3FkoowGepKesG4aRvzW4d?= =?us-ascii?Q?gjWpQ2/ktQ3npCI7u5jF/pG5iqlbCbnqUe7z3/gyDMdUbUv8RawV4Jt+F3g8?= =?us-ascii?Q?b477oEPB62dGZwHNBKh6ZonWsdS07n/3p19oHCP74av7+0MSjB+SP6J3jna5?= =?us-ascii?Q?Xc7HfapJaM2J5xIwREdS0WdkMAnC9sXgzZIw5RvJCAXW1fQ8Qp4sRpq0TlTT?= =?us-ascii?Q?wg6liwUrAJElLxhPVZ2uzPYiVi9An+6s0ybZ1vYHvtdlJfzws69w8JHjX4F4?= =?us-ascii?Q?SbT1LD405MrQxoJxTAnMCJokeBEQman8HSXOxgZr9qjw4J9e8RPFbwyqZ3/2?= =?us-ascii?Q?V42XUYl3fOwGTJ0L4XGOLLNpKXZaRdg9X2JtfNilkoVfKLOJA47w3u+9/Uhp?= =?us-ascii?Q?vrGT+VYNKTZBerG1L8gFhwSdZAi9tA6IWSGEIHX6vp++OnN+aLdGenQbhUcG?= =?us-ascii?Q?OU6dzX3td1TNTeiYP03lcFdif3Pp+hcJIQi7rztU8eAZ3w9Z9nLCq0CCUNwq?= =?us-ascii?Q?ke4niAzn7lbSP8KmWaEV55LoK2ZKDB463g2qvp5BpcoRPfEKk03v8QSrfORV?= =?us-ascii?Q?+X8BBFqK0JG1+K8tEka/xcSPskz982Ib+BDuzJIYe4d6CzxpnVYNtqhg=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 6:R41KZD5vFULd+Z4Y64eOea+2pOIZXeDzffqV+cvftoYKizxk6IreeQu0xATGGK11INs9gJ7vL8p1o0W638L93M4RUPMIqSHGluhKPZQZkv5BE2zHC20eVpXYvo8UI+lP6HZfGabXhthaNJ7tLdhhX68jX8ZcNNzExOVVAAPvm0zzZZUyR+mtNWl+9xGPx/f0mTgilLVkhaHpP/163NuO6b63Lr2Xltv/qkOQoqW4tqq4rx889uQZbB6atkD7zIAV4Bik8eDgUio51aCwDyEsezx0whWGUsRtuOkhANrSraBlSgR0BD/PXn9iL8CaTp3W; 5:wmxYp478+kPEDa0wdV/s2Q+7Ec78C+6e57WPcG7E9wawQ2DVem1wMQNN9B76DwOoOF/TZirfa6p5nOPtUO2xoQ7wA/MdlCvOjXSmBnsx1sDnZN8jqImV+FtRcBDJOFWqAz7d+c3azklcAaXQ7Y4T0Q==; 24:l1otro/WMC5ABLUaDl+CiPQ0NJH4qyLbDa7VOojD52TlVzDhAe0eB4lkC/bsU1wSER/kCZJ6BE5URI5277eKB22xAMbYvDG/LKEeAAu3TCw=; 7:8y4HHhlgQn41FaHMlzzZ7SfyT9eIe+xrYyWcVbCZoawo/6wD0xSy6ZjITM8HevUl15NvRC4/gjwJ6LqY5DVNlxNc3X+CHeD5UppQEK4vs/yJYxkBpy5thw4UbYVcZdrGez+9MR58+6OCLTmVSvg7QjJ8p+EU2WkyQZEaPW4I7Bi0BPVq/posu/pbM6gqYT5El/P6u7XC3QRKKbPdgrVfzQ9RNGScw2arbY2DRZ51DlCXesSiK8grV4v0ETKwL4WEwu8ZeaUgKqltO46cNmBbZwQG/tIWvnrEcw4qClaZA5oQsAIWezLXtUyjJzdr7xljECV2nAdXrMGoSDSMizriyi5gx/iq8zpqDAPj62X5usI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2016 20:25:50.4064 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR07MB389 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes -trace-save doesn't check whether an argument is passed, leading to a segfault if you pass nothing. I added a small test, which only tests the error conditions of -trace-save. gdb/ChangeLog: * mi/mi-main.c (mi_cmd_trace_save): Check if argument is present before using it. gdb/testsuite/ChangeLog: * gdb.trace/mi-trace-save.exp: New file. --- gdb/mi/mi-main.c | 4 +++ gdb/testsuite/gdb.trace/mi-trace-save.exp | 41 +++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 gdb/testsuite/gdb.trace/mi-trace-save.exp diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 7cd9706..479d3a4 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -2699,6 +2699,10 @@ mi_cmd_trace_save (char *command, char **argv, int argc) break; } } + + if (oind >= argc) + error (_("Argument required (file in which to save trace data)")); + filename = argv[oind]; if (generate_ctf) diff --git a/gdb/testsuite/gdb.trace/mi-trace-save.exp b/gdb/testsuite/gdb.trace/mi-trace-save.exp new file mode 100644 index 0000000..52ad9f1 --- /dev/null +++ b/gdb/testsuite/gdb.trace/mi-trace-save.exp @@ -0,0 +1,41 @@ +# Copyright 2016 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# The -trace-save command is already tested in other files (e.g. +# mi-trace-frame-collected.exp), so this file currently only tests the error +# cases of -trace-save. + +load_lib mi-support.exp + +mi_gdb_start + +# Test without the required "filename" argument. + +proc test_trace_save_missing_arg { } { + set err_re [string_to_regexp "^error,msg=\"Argument required (file in which to save trace data)\""] + + mi_gdb_test "-trace-save" "$err_re" "-trace-save with missing argument" +} + +# Test with an unrecognized option. + +proc test_trace_save_wrong_opt { } { + set err_re [string_to_regexp "^error,msg=\"-trace-save: Unknown option ``hey''\""] + + mi_gdb_test "-trace-save -hey" "$err_re" "-trace-save with wrong option" +} + +test_trace_save_missing_arg +test_trace_save_wrong_opt