From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2078.outbound.protection.outlook.com [40.107.247.78]) by sourceware.org (Postfix) with ESMTPS id 025463858C5F for ; Fri, 3 Feb 2023 13:44:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 025463858C5F Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Qaab5Zxf7DG7dRVhkJJP7yb2LeZTeRcJy3Bbp9q3hh5Ery6vgcdg7NyRIbkFClMsqj77PSby7ASfEz1GTyM1/QWICcbxsnkF9dqKZX2r8053FGNxw/VCCsZq7Q1+HrauGex8O+UnDLcA5Xl3K64176Sbe3/cll8S991zRdj5sNlOanXjO5BAkjD5Q4iiT3edBB4u7FfBA0D2T6wDz0xIEXgfjjv0k7+TsfZa54phZAN5DzY3yWKLHu34B4WYUQBECaYvFaLWvi21+X2IFts/IxvIYC7zBAHznI3Bs1htkIGD2uYmiZyDRLOD+N2xsWckbe/vHu1qBOeFTPOtk9EUYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lmOEu3dsZKEAU1cSFrwPYXpycqiFj+JoQzxbh3ULDx4=; b=OlQabw7BuqYVAm5XGkYS5X+Ymo62O2d/IpZjZWJV/z1AeWKBZM10jJXFmqbAzCufFP27g0yto3RO9ck4GaODhHV1xxRen4RqEfDKh380Pyr6sIC1AG6nYYP9FlPI25hqazPNAnAtNpVng+peBWPFFDRZdZOD+XfGaETIkXzskzsX6ppOFG3sB4eiB75D+QFgA7doGf7B1OP05zRI5CS3FiRrVv1JKjxzNotJLuMx9eJg/pmzpa1pFf0S+A59dKGcZ/w71lck2ShPGDsgDaoRekOm/yowDbQgRoWy+wTk8N0wn2Sxztb8JIGWMeXf+/pehUgcuyHluGfwVV30pHjwag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lmOEu3dsZKEAU1cSFrwPYXpycqiFj+JoQzxbh3ULDx4=; b=x8YVxnGxLtL2P35X8acPpSmuoCrOkFpsULYlYawQeOYkY6Grb7yR9Bqg1eEyjNmZtF7hyBdu/EMYrklOPKdxKj5dG9vcMEecBbS4xplA7WhbhD16a50g1JPiLG0pYwVntJpmcRiWgnfiIa5vxQzaqUCAOBBXt+taDl8z71AKdSWkz+Q+gGYZ1kEKi+9aGx2VYgtz1e4nONBt3tHdnWzlRvhHBhmo21PDGIJbvERi1i918H4dbIQI15lxNly4d7ltnn39F6M/d20sq2UVHHzwCjrGhP74cTYlvUJjyZlfxLGyMlrWP/K3LXTUAMjWCY4ryv2RgLm8tUcFvskO5JbQOg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM0PR04MB7108.eurprd04.prod.outlook.com (2603:10a6:208:19e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.24; Fri, 3 Feb 2023 13:44:08 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178%6]) with mapi id 15.20.6064.024; Fri, 3 Feb 2023 13:44:08 +0000 Message-ID: Date: Fri, 3 Feb 2023 14:44:06 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: Recursion in as_info_where Content-Language: en-US To: Alan Modra Cc: binutils@sourceware.org References: <2d6291d4-7307-079b-1cfe-54ae6eb0f951@suse.com> From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0124.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:97::13) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM0PR04MB7108:EE_ X-MS-Office365-Filtering-Correlation-Id: ef53e317-1651-4e87-ff2b-08db05ecb91e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GxfcwHyN+lCnrS0c80xlXKDTRYeIix/DT43C9VQ9zywWcayl+rfnxAfSAc5eenXY7I6td2Hvw2mC4SH+bpfh9y/kf/cgO8yjrv4bRgP1JcBp7wl08V4EP1DMyedWeQcmE1ZGiuOvz4llPB2Hif/pPYNYtY+vk0l8jnGPKcYXNYJCuph7bjUmoAmDtT3IasayoY8Acc0BxkheZIgK1MPJXzE64FvrOSKN95q8s6gKYU+2sAU13ecIrwZDccCvgvDs0wm02XoSIq+bwMiF11k/liGP6nDkjmTXPIWbjeKAp4PptS0Sms8sd4hk7ml6T+4SvoVa/E6KU4wpLwL4GRS8CnsISrfQd7twHNKDciE1E6xgWDm1hh3hMW8ar0gZlbopCdUu3RQQ8Ow8nyrJ2Ki6yJeMqY3JLwRNyNwr+pqEkwq/dayiAq/1lUPYJTZUvthQa80QF/iLlAoeY17PnIvYLTPJUmlCYNbnIwEdsS90wvFjWIbu30H2a3ZEfJ4ctMDqqZIgwNQ0RLnvva6il52vr8uXrvIf5HPh3lrbGGynBnjiKWrzUO9eiSytSlWOi3yB3boIW+FSv2735FT4HAAn4wFhgqb8cv91Hi9BQYiUCGH4V9XG2sbnpJZ9vpwxwr2Ow0H+BRXeeiSoiiKfpJJJ1+DJmCBivdTaAxtNlRn9VcDzRcGBPM2fxtmoUlQ1fBJjar4OLEsyROCXRbQ33/iHYpno7Si60Y+d6xgec2diOCY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(346002)(366004)(39860400002)(136003)(396003)(376002)(451199018)(2616005)(5660300002)(6506007)(53546011)(31696002)(36756003)(26005)(316002)(186003)(6512007)(86362001)(6486002)(478600001)(2906002)(38100700002)(7116003)(8676002)(8936002)(41300700001)(66946007)(31686004)(66556008)(66476007)(6916009)(4326008)(83380400001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bk1Qek5kbUJuOGRaeThYeU91R0p3ZUF0ZnAwV0lJbjNzbmlQbUczdVlvWFBv?= =?utf-8?B?NE8reXllUXB4Zmd6RjNDVWdmbVhmSHZtR1JST0JER01UYURXeUxPZWxMVHpF?= =?utf-8?B?NDc0RmdVbHZvSExFMEtadVlPcTAzNmsycVRUZFhFMVdnK2pIVS9tc0FNTHN0?= =?utf-8?B?WU1CL0M2Z3ZHcHpVSVZqeWJtcnptRXBmVE1DRlRzR2tkRTU1eUdNa3FSVnNp?= =?utf-8?B?ZktwczVTUUdnWTdkODNyb0J6bkhsTlV6WllzTWUxclpldXBVSWgvVlNUUUV2?= =?utf-8?B?MlZ6YWF5TUhkYlg3aU0ybWlOdlNSaXZPUHNIa1hHRVZVWGltMXVJS1V4Mmtp?= =?utf-8?B?eFQwaXU0bmwvcmNKVGV5bDNPRGdDRktaMmdUc3lwTEdLSGQ0T2RlUXUzb2tL?= =?utf-8?B?aXd5d0hTMy9pRzl2MytiNGJob1NzTXVNcXRGK2x5Nm9zQ0V5aFliV0RUNXBH?= =?utf-8?B?bGtQb25SVGZEY09YTWR2Rk9hTFdONFZNSHpRM2hSOGtFZ2NFMDcrQmR6Yk83?= =?utf-8?B?VTg5cUpLZnJXTDFsQTUxTDFsc2RyUTE5MGpobmlNMHRpaW5TVDNXUzkzNlY4?= =?utf-8?B?UnYweUp4OUVZU3lFbDJ5U256d3Z1dzlPd2I0d2lWTkN5VFpvYTVmVEVDSEll?= =?utf-8?B?TEtUWWg2dEU3RHZaa1BNWGxBL2M3bWxtRmxNK1ZZc2wzNjI0c2hRdXZHSUZJ?= =?utf-8?B?TTdHa0dZdSt0VTZjd0U3WDdSYUlVSFoyUkpycForbEREdFh6UzBucjdHZEMz?= =?utf-8?B?cG5zd2ZBcUtBelJUb05XYmZ1MXlVU3g1S1k1d005VDNmL0liOC8xaUJwOWEz?= =?utf-8?B?WEVYbHFjME5lVEpjUnM4aVZZYmxSQnYwUWNUZXhLK1hRYlpCSEEyTWtQZFFw?= =?utf-8?B?VGZPMG5ldTRTdW9ORUNBT0Y1Y2pDS0JGczRZcE1wbFNhcm9RZE5NaUc5ay9h?= =?utf-8?B?ZzUxWU92SG9SUmx0dVA3N3IxSnI5TFJ1aElpTUtTVEJhWlYzOWxTdVc5TW1Q?= =?utf-8?B?NVpzK0NJRXg1TnllVWpFa0dJUXRpTXpLcFROUkUrN0FNcHpVdGxEajZvclpo?= =?utf-8?B?MWRzR0pkSFNBakxOU1JnVGpCNDZyMnJ0Rkl0WitaTkZxcmFEUVJzUDhjQWI1?= =?utf-8?B?TThORUJwSE4xN2F2d0lxVk1uVHdDVjFCTDYvRHplNFJjbG1hZFp2b1FJbUlx?= =?utf-8?B?a3dKaFVocXNYU215ay9ucFRwbVR3MmNUTURBd0hRdFcydzJZc3lnRWNucVR6?= =?utf-8?B?UTdLamZmM1hPSHdhcHBRbStHN1g5MlYrVzZBOWxsS3ZpRkRXSzNnQWlJTGZ1?= =?utf-8?B?d1VYSDBWeThnSFI5d0xTL3VxRjZKSjh6SWFHdUdBUkFWUHJ5N1U1U1JNVkJF?= =?utf-8?B?N1h2VVpVMSt6UDRFZXpHdTA5OHVONjlrVXUzeWs1b1ZQN2hTVUExRXRqRmYy?= =?utf-8?B?a3d1clphMmN3Nk9SOEpqdGJJQ09uOTYvQ1ljQWlRTHZQWHNtd3cweDFCUTFG?= =?utf-8?B?dUtYbXlDck5oUkR5bE94bDhaSE4vZFRhUGJMRUNvSHFKdERGMTRsYjgrbjY2?= =?utf-8?B?ODRKeXhhNFgwdUROODFseDBxdEpaSHIxcklaYnJIeU9QYVFqbjdENVYzSjdj?= =?utf-8?B?U0I2UENuSkhYUUtYSWFMaEc1MjUrTjJlTTJ0blBxU2RwVG43R1RtM1ZRK0Fl?= =?utf-8?B?U2UzeEhyRjlDampyNWZERFpHZ0JXa2p3djBvTklFUjQ5SDlFUzVmMzN4elhk?= =?utf-8?B?NDdubldRdW1CZkkyRXVISkt2cGZSMTd2cTZFZGw1dFBKUnFpcGlKNmhJMlNt?= =?utf-8?B?TDY1d09VSUYyL25EMkg0K2VWTXRxMnNPbnlwc3pjODNtZlZ3cFlKLzExbVdh?= =?utf-8?B?TmxianBkVjhOUTgvejRYWFcrTWZOSVhqZGRPSHFOL1ZQMnZRMlkxSWo0WFBJ?= =?utf-8?B?N2poendRejZsSmFwNkdmTjc5bmlKWi9jdXZVcW1TU3VONnhRUU12VUdkR09w?= =?utf-8?B?cTR4WVllYjIvY2NqVW1MVkNFVUt0bksyN2drc1pHRE8zWkZpUThIOEVDMkQz?= =?utf-8?B?VkpOV3FvQzlNK2NTK1VQR2V0MmFGLzVHalJJSkxDSDdueVVXamgvb0RvdmMr?= =?utf-8?Q?KRIEO9AWsEISB/w50OGyVnRwN?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef53e317-1651-4e87-ff2b-08db05ecb91e X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2023 13:44:08.5700 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YFtG1faoZd8FSCxuuQbWkf4L0i5x+QlweJE3dIxVqHIxh5EolThhlUpQj+D3DIpWdiihA/SaNKModEz8H0c5Yw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7108 X-Spam-Status: No, score=-3034.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP 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: On 01.02.2023 12:59, Alan Modra wrote: > On Wed, Feb 01, 2023 at 10:24:25AM +0100, Jan Beulich wrote: >> On 01.02.2023 07:36, Alan Modra via Binutils wrote: >>> This function has a gas_assert, ie. possible call to as_abort, which >>> calls as_report_context, which calls as_info_where. Attached fuzzer >>> testcase managed to trigger a stack overflow. >>> >>> * messages.c (as_info_where): Don't gas_assert. >>> >>> diff --git a/gas/messages.c b/gas/messages.c >>> index 0db075d779c..7c018acf69f 100644 >>> --- a/gas/messages.c >>> +++ b/gas/messages.c >>> @@ -141,8 +141,6 @@ as_info_where (const char *file, unsigned int line, unsigned int indent, >>> va_list args; >>> char buffer[2000]; >>> >>> - gas_assert (file != NULL && line > 0 && indent <= INT_MAX); >> >> If this go in the way, isn't it that the assertion actually triggered? >> In which case shouldn't the cause for it triggering be addressed >> instead, to avoid subsequent knock-on damage (e.g. from de-referencing >> "file"? (I may want to play with the testcase a little myself.) > > The testcase is really weird, something that no programmer would ever > write. It failed the assert with line == 0. I'll let you discover > the horrible "# line file" with embedded \0 that gets you there. :-) Sure. That's an interaction bug between read_a_source_file()'s bumping of line numbers and s_linefile() trying to compensate. I have a fix for that, but I'll want to give it wider testing before posting. As to the assertion here, I'd prefer if we would keep it, and do e.g. the below instead. Thoughts? Jan --- a/gas/messages.c +++ b/gas/messages.c @@ -140,6 +140,12 @@ as_info_where (const char *file, unsigne { va_list args; char buffer[2000]; + static bool active; + + /* We can come back here if e.g. the assertion below triggers. */ + if (active) + return; + active = true; gas_assert (file != NULL && line > 0 && indent <= INT_MAX); @@ -148,6 +154,8 @@ as_info_where (const char *file, unsigne va_end (args); fprintf (stderr, "%s:%u: %*s%s%s\n", file, line, (int)indent, "", _("Info: "), buffer); + + active = false; } /* Send to stderr a string as a warning, and locate warning