From patchwork Mon Oct 17 20:49:55 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 16589 Received: (qmail 100504 invoked by alias); 17 Oct 2016 20:50:24 -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 100488 invoked by uid 89); 17 Oct 2016 20:50:23 -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 autolearn=ham version=3.3.2 spammy=H*RU:sk:DB4PR07, H*r:sk:DB4PR07, HX-Microsoft-Antispam-PRVS:sk:DB4PR07, HX-ClientProxiedBy:sk:DB4PR07 X-HELO: sesbmg23.ericsson.net Received: from sesbmg23.ericsson.net (HELO sesbmg23.ericsson.net) (193.180.251.37) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 17 Oct 2016 20:50:13 +0000 Received: from ESESSHC021.ericsson.se (Unknown_Domain [153.88.183.81]) by (Symantec Mail Security) with SMTP id 3F.B9.31035.18935085; Mon, 17 Oct 2016 22:50:10 +0200 (CEST) Received: from EUR01-HE1-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; Mon, 17 Oct 2016 22:50:08 +0200 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [142.133.110.144] (192.75.88.130) by DB4PR07MB395.eurprd07.prod.outlook.com (10.141.236.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.669.5; Mon, 17 Oct 2016 20:50:06 +0000 Subject: Re: [PATCH] Fix -trace-save crash when argument is missing To: Yao Qi References: <20161014202536.21670-1-simon.marchi@ericsson.com> CC: "gdb-patches@sourceware.org" From: Simon Marchi Message-ID: Date: Mon, 17 Oct 2016 16:49:55 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: X-ClientProxiedBy: CY1PR20CA0012.namprd20.prod.outlook.com (10.161.165.150) To DB4PR07MB395.eurprd07.prod.outlook.com (10.141.236.18) X-MS-Office365-Filtering-Correlation-Id: 9ca4aef0-42b0-4c4f-0f4f-08d3f6cf2d75 X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB395; 2:GNsGjXQQuL8ZMDTBaFNFVSKCXUnK8sj+AQ0o8xo4K9Nl4OfHtIppRpQXPwAMHx1XvO/lJE/X+CjPixbeavZ68f1SDkeO6eA7Gs8K2MDgSrJnC2puQXJhnXOP7Y2TXzqLLxn7JKLElCu+cCKs0Ey/c7TiIE3Qb9TPakKpkmAzm/bYpLEEIl+piNddKpHbVEhv1XcthrF93I90AirDEF6mIw==; 3:9FeEyPMHBVVhRh2okrqe8g6W4hnVIBggkRorGAQD2herpaIM5XKnj02RDNHAMzqQs+4vR0YsfcJJPDiZ/5aUSyHaOz10lX5q9IehyMrUiUvbyQmaf7ykRyTD4BqLQtHdi0Jsv/H/zMaPVEv4ioMcvg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB4PR07MB395; X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB395; 25:a73R2Rre06i3Q8HaQnITzbsN6/TpFRsF/ZjTd+B6UV47FwK/VoIFgJKXiw62gK3piySmWE+bOoev4mzrlFiTyOTd+mpFXvjrCs69Bnpk4dzmx6Xugr0ol7IYJjHh7TXyi4bF1n/04MGrA5TAjcLlcfqAK5IBWG1wupYeqqmyLYplb88t5dyMK8mzziFIjR2nHOiYyI0whd0y3670zdu1EItXCv/FqIZK9CoKpazwAbJGn4+OLN9+qztJLGvrljdbZE2btc03i+7Lh+vwB0uBuIeO2aBlQqoTPMAeZPu2Gj9exgZkIdquOwCP4SF1SPdUCVjMiAypHZIXCw8tOI7Fjq8PXHyQ/ETu4P1N9bpUcz4j+5Eh26QgnHTtMrxV4Ih1I/KEnDOhl6k+gxkVEmOB1iQaw2tYC68ov92qq+BqjdStcuaqibkDQd09fUHkaQxD0KI+7tuec4tK+jqrnenB61j8EyRv7pKiKtenuDkxuLOjYwm5S+Yb9ckZV6sAMbZHSxMG3LMJk/wUwRnNhxIMgXZB5eBu9HinzX/1MqJ7fQkU8zJWQ9pjKOutgGKSkthQJK5TKzfgjeD53Egok/6qJ2fZl0MDNGXbA+c5yEl/QeGpm3Qg0VbTM33eeovo7wWiPvxN653wjd4PBc+6g5ORlwFPnVhCGFitT+yBssqxNckihFYm0jLt9/RWtHG1f1gROaCoGsEyIB8BBMeQ77wOiXBzL0/RZJgyLiz1bH7nKVBXjwroi0M4tvoLEc0t511r0Kmw/9+1MSY4wOvwo7m3G03r6a7HUa/+Fu3crv2rmLYGoQ1O1fAl0M+4OWxzImy0 X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB395; 31:jAK9r9c973p0x/RNmpLGJNXOE3zYwHK5Y9T7buMsradmng5Sd9gjcsjuJzqlakCKrxtBDZC+LgIFOat8VP6jtSeewvJrm8o31nRU+ts9O8rB9ov0Xwh26npbgH1WdaokT0FmX+XGI4YOyQ/3m75lM7WnPgLMJpH2NzZ82UAiDietr/h1EgKtM3nhYYevNZDTOSFLK8E7mKjb8rrOZfQnQSVTcclWgeAbDCRiblMHzIq09BnsQfAhXOzoNZ/5XNi9; 20:fF6R6bavGKpLQyMd7ZinfmU/F9CRwWurja6N4HYqiLbyVWN2JTdF2+oNSAn2XIL1AdiCI1YKTarERpM8jTBx70dYxTS/VFilPtxJEMs/UMLK2z76GGQuHzwZH3GjqSPv+dmTD9JhDBCbBvO4zDWvPrqWvLUU9q0MD156rkaonLHi2/BysIM/47OSjRyO17kc/T7AoLUyJ4wrmlypBtPOFVwiopUzCjILS/C3n7W3oF/M0l+W5TYUyFuqxu+0X2MT17fWx5EhS9r/Xib3SN/cpkL52v0cEhNvwh8E9O/e3dNbhy9y70RPd6FGeZrOhqSoZL2EiPUd5cI5YFGKScxE2Rhbet7Az6vJhPfdwBWERRdnAuJyi84F3CjMGGMeBFEpdkheXerKniPPNib1J5EKrCXeINxfr3q6kmWx/Apq2sve/lnCwWDbUo150d2y3+080MkW9BNl+P8u1p9qRmtWVWWprkxGrbhxxKHgkcoxQto8zRgOnKiT9XV4CgOHx7xw X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(37575265505322)(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); SRVR:DB4PR07MB395; BCL:0; PCL:0; RULEID:; SRVR:DB4PR07MB395; X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB395; 4:66bDtfQtAAlVaKMvMqT82XbP01W9K/pVAFa37hmlyVSdooNzWgXkvq/j3f8PF1vYdoj9K66l+ftVm//iTYhC0mLdmurk9h3t8pKap/4uBX4klZweviNqqlHWDqMhHJBWHCKVmagAmRtl9XNlarY17qai1+jhL3XfEyljv8bNSg9kpMBVifv6rZxN30agf20XPGSmlfWmVb3eBc1Ejx03up+RgAsXbFMMTgZX1gftTec12V05FMPCij0rPIpL5NtUVMRBH/cl/a4o1TBqrvEIeUVTdYh6jfkEXAOd/tBHp3yyBJFPzXU9vKtebt5h7f5wkhhz1c9/bMquJZuaRaSK0aCf+13KEJEI36NwqNlzH8od6Jh8U59ai5GgvusSVyDcFEHqMvPcm21RkMz4/kx0OVmmSYJUvoWkAcM0g85JkXIEQZiDq2gqOwMIA8RdVqtHiECIFXfq7FdMzoROkGcxW+k3bJbAf9/QGnR4Gkh/bieIbMulDMjtqJGtZD1p5cU9NLw+0qdf7+Bdm0rJrtogwA== X-Forefront-PRVS: 0098BA6C6C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(7916002)(199003)(24454002)(54534003)(377424004)(189002)(377454003)(586003)(4001350100001)(50466002)(230700001)(8676002)(65826007)(101416001)(5660300001)(305945005)(7736002)(7846002)(1411001)(4326007)(81166006)(68736007)(81156014)(3846002)(97736004)(64126003)(92566002)(6116002)(23676002)(4001150100001)(36756003)(50986999)(106356001)(31686004)(65956001)(65806001)(66066001)(15975445007)(77096005)(19580395003)(42186005)(105586002)(76176999)(33646002)(83506001)(31696002)(19580405001)(2906002)(54356999)(47776003)(6916009)(2950100002)(6666003)(110136003)(86362001)(189998001)(575784001)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB4PR07MB395; H:[142.133.110.144]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjRQUjA3TUIzOTU7MjM6ZjhSM05ZY05XU3VxOXVpWjEyMVRpZGtrUVJT?= =?utf-8?B?eXlrL01WcWVEd3ZJOUxheUxGSnFOTnMwTmxpbWJOUGgyMUo0RjJlMWxBQk4z?= =?utf-8?B?VlE2U1dqRjcxSlpLdndnQ2doTHdYU1FtNXNFOGE4eHVkZkZsMHhERTVJMU8z?= =?utf-8?B?Wnc4K3psaTNzc3ZnQ1pCV3NDUy9TUENYNkVPdWxjSjAycnArVmVIa2JYQm5l?= =?utf-8?B?emprdkNWNUFCMXE1OVZSU1RvaTR3ekhjUUJZQURadEVMNmdZZmNxNUthTFl4?= =?utf-8?B?SDEvN0xTdEF3Z0ZzMm1ucERYWXVDT1dWa2cyK0Z1M0kvTGdqNjhtVGY1eGFH?= =?utf-8?B?ZXNNZ2ljUHFuRC9pZHhyeW80WXVlK2lPSTI1bnpEUUZhelQrVnpaSEs4eGZa?= =?utf-8?B?NUxLQUNlLzFXc0xzZVJnWDNVbnlpZlBSSkpOSjh4NGRBQzhvNWxoL3p0anYx?= =?utf-8?B?d3plcW9nQXRzalZxekhVVndBa2dyd0dyMnVac0MzTjNsSXl4a0NyMUw1MFRF?= =?utf-8?B?aGU2ZCtybEczS1NiS3lRbTdhZ3JJTDk4K1QxODdHbVJxWXhWVFRyQWNXL3da?= =?utf-8?B?MllINWoyS1JBQUxTM1ZpZGJSbEVDcVRORGFyZklFVW9SM3A0YjR4VzlNR0pH?= =?utf-8?B?SWtMamx5RzlFZUZvR2FJK3Jaakx5cjUrRkMvZ1VHdTJqWjk5OXZ6OE1kY2JF?= =?utf-8?B?bXVqb3RaZlp2Ky9vWDhkMnZ2ZmVHOTErcVUvQmQrcGd1ZGtVaU5BeXpSS0JK?= =?utf-8?B?MU9nOVQxNjVOTUdTS01sYlVpb1I1NzBZSEt6eUZrR1hZcEVEYWVVR1QyNnNp?= =?utf-8?B?c1lnUDR6a3M5K2IwT3RSdERJUTVpKzhicHRKM0VKdVoyblgxWFNSSWJwbCtn?= =?utf-8?B?MjR3U2dBQ2MwcmdOeFVZaXQ5NEFEWktPSHlpeE1Id0xzbGQ0T0ZBUGpmVVVV?= =?utf-8?B?blZ0N05rV0V0RW5BSG5oeVRSTHI4NHRrU0JRV1JFTmMrVEdqRVF1dXF4anJa?= =?utf-8?B?UmthRzlSV0FpaFhZN3hxTEVXUktDV0NJUTRjK2VnRnQwbnBUc3JFOERyS0xR?= =?utf-8?B?aVV5WXNVZjRXMGpXelhxODBDcEc2NlFpY1dTWVgyU05YN25GYWFqeVhUamti?= =?utf-8?B?ZU91OTk0enZhQUQzWjFpdDhzVGRoM3JGYWJ2dk96Y2llcDl2dDlzNUNoQ2RM?= =?utf-8?B?K0RFTTZUQkx4QWZsbFB3b2x5bnMzSUZpN0VoRlFZL09aekZWeVpuZHRvK244?= =?utf-8?B?aklsSy9QbTVhbHBTNzkvTDQrcmlhNXEwMjJYcXJpWDI0L0dSamlpdFFIdU92?= =?utf-8?B?RXBnalNPbUZXSWN2Zkwxb0s5ZjRzeC9CWnVTMyt5M0NUbXUzYXk5cXIyRnZt?= =?utf-8?B?cGxPcEFlOWpTb3B6aFMwSjBQWktQVGF1SkZTL1BRN0t4QlV4N2NFT1ArYmxG?= =?utf-8?B?Q1BDWFhQeXdkTG41aDNXUlhDUnpNYWZMUlZ5akVUNno4ZnVRT1VlT1kxYnFJ?= =?utf-8?B?T2F5ZEpFeDNCSXcwdWxJdHZISXJuMkVaekp5cGtNK3ZvTHNlTWRRS1FQbTNx?= =?utf-8?B?dXBzTFZackUzQWd2RkJuVUdjcGRoaEZPUWc4SVNiSlhpZjNtM3hOVGJrbm5j?= =?utf-8?B?VEtUU1Fob1U3ZHZGUHl5dEg2SlY1TnJDdUZrTllSNmtaQmNwOVlUeGV4enFQ?= =?utf-8?B?K1l2eXNZOXE3U2RGejljZG5zbVU2ZGtxQnRYVEoxemZpamoxdlFieHJUTUNJ?= =?utf-8?B?QkZJczJwWWZ5eVdsNXhMUEY0MUVPam9VWDFYQkRVb0hVbnlOby9UUFlWNHVr?= =?utf-8?B?WWpwNy9CRjNDamgvUWRwUVFZQlBvSEg5d2s3eHhpQzNLdmZ4SVgvWkNvRGY4?= =?utf-8?B?TCs2QWZLWE5sRjV5WGIydmJSU2VaUXRFZEVhcit4R0Nwb2V2RDYxUmFFVklK?= =?utf-8?B?N25SQnpMcXlrbFZXTExBbE1xaHhsdENjRzQ3b0FYcnJBRGRUbHYza2VHeFUy?= =?utf-8?B?UUxhQnZubGphYTVHRnJsWWt3Nkw4VjFXRTViYkQrbjlXQjFwR2prcFBmSGNT?= =?utf-8?Q?evY=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB395; 6:h9MUPZd3T7JNcei1HWLN18sxvD5MoBIo/1Q9QoA8qbksSdsaRmWW0jU5toUt6TZtXXKzqWR3Ijs7smXkthAsjpMdpua8SaIo4+gLPSiTMnr+uSM62ze8/wM8oxtiob8Pb5BNoCNRl8mmf41dfMnTLC9ieIAdtULYlLp8B3JeT570JyxftMQW6nOtKoff5b59hRRQa07IjKRKsXA7FaMARLFyxpp+cpPdZchwOme5ey/oMIfmiQ41nPEXu3/4MCfdZHKR8m3MPN85d6kFB3FLbBPm1KVQh+1DECG/aJKo35NZw/fsN2/dECV3AjntR1i8; 5:j1OUVCYeRA820n/hNpmnvTOqaTs1r9EdemmFmFZtScQ6c4QqG+fBnfiKbCBqMMXolYAXwH2E8qoyzChNr9RC9oThFdUbL5njiHed9qc3ltp2sZs1UNAiI6e8/F8AmKW3zsRTPVztIOHNW0Hc34mf3Q==; 24:CMfMZRS/ecXO1KL/0Q40P1CnwWEy4ZmJzN1cMNl+AxGep03VMD+sdokRCwhXIoHRtrWZ8+O9v1sr5c17v2YFm52QTod5UvXeYIo2VEQBVJ4=; 7:hT4S4zPtHk2z+QfBynDbg+5jH51d1Qgcb9i2vEyBVe7oMSdtcAZhtccFBO1xjEJcVXhTT2ELeAhADfjMJXpcWApEYvWStNtGABsDatugVSX/ieIxwnWiXAX31DBqNq1PDIrZBoQJc/WjHIO3/QCEZEsBfmTzWEfSy8LP1SZnWfxls0SCRErpDICxfKy4/OHYp4xQaWQqSOTi7S6EpZpqw6aYuvEtF3T0tJFSbpxwV1eBKIt+Qas6toFglusWOd6Ai5l6R28rNUYLALBvbaxjFkSQlFw6Bmn58Z9e0sLIrIvWKnfKYI047BM3xKD88NrN6DHp/9vTduNZrv8C4cYPIYiw54dZuEVTBtCBx85DCy8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2016 20:50:06.3926 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR07MB395 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes On 16-10-17 04:36 PM, Simon Marchi wrote: > On 16-10-17 04:08 PM, Yao Qi wrote: >> HI Simon, >> Patch is good to me. A nit below, >> >> On Fri, Oct 14, 2016 at 4:25 PM, Simon Marchi wrote: >>> + >>> + if (oind >= argc) >> >> Nit: if (argc - oind != 1) >> >>> + error (_("Argument required (file in which to save trace data)")); >>> + > > Good idea, otherwise giving too many arguments still works, when it > shouldn't. I'll change the error message to: > > "Exactly one argument required ..." > > Thanks. Pushed. Here is the final version: From 5bad3170301060ee0801a739ffc213abae664973 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Mon, 17 Oct 2016 16:47:36 -0400 Subject: [PATCH] Fix -trace-save crash when argument is missing -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/ChangeLog | 5 ++++ gdb/mi/mi-main.c | 5 ++++ gdb/testsuite/ChangeLog | 4 +++ gdb/testsuite/gdb.trace/mi-trace-save.exp | 42 +++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 gdb/testsuite/gdb.trace/mi-trace-save.exp diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4ebbf8d..4f706fd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2016-10-17 Simon Marchi + + * mi/mi-main.c (mi_cmd_trace_save): Check if argument is present + before using it. + 2016-10-17 Pedro Alves * charset.h (class wchar_iterator) [PHONY_ICONV] : Use diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 7cd9706..81e82ed 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -2699,6 +2699,11 @@ mi_cmd_trace_save (char *command, char **argv, int argc) break; } } + + if (argc - oind != 1) + error (_("Exactly one argument required " + "(file in which to save trace data)")); + filename = argv[oind]; if (generate_ctf) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index ac2d05d..f0c8415 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-10-17 Simon Marchi + + * gdb.trace/mi-trace-save.exp: New file. + 2016-10-13 Yao Qi * gdb.base/code_elim.exp (get_var_address): Remove. 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..96bb70d --- /dev/null +++ b/gdb/testsuite/gdb.trace/mi-trace-save.exp @@ -0,0 +1,42 @@ +# 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_wrong_num_args { } { + set err_re [string_to_regexp "^error,msg=\"Exactly one argument required (file in which to save trace data)\""] + + mi_gdb_test "-trace-save" "$err_re" "-trace-save with missing argument" + mi_gdb_test "-trace-save a b" "$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_wrong_num_args +test_trace_save_wrong_opt