From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2088.outbound.protection.outlook.com [40.107.22.88]) by sourceware.org (Postfix) with ESMTPS id B0B4E3858D33 for ; Thu, 9 Nov 2023 07:52:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B0B4E3858D33 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-Filter: OpenARC Filter v1.0.0 sourceware.org B0B4E3858D33 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.22.88 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1699516352; cv=pass; b=SoIfi3XZpxTFB4bqi6IHty6Qeq/1mJ6DTRXrZCakhcRK7kXekM4Is5wAU0W2PmNl6ximFuuIQHf3tmUGPqD3EeoL7Tlv9w0Y+EUdeL2CAXzez9CPl6YiTxV60dY1I2Lo5809f4DWNxgPiBg6epE8VgaA8gPRjr+6IKhjqrad9UI= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1699516352; c=relaxed/simple; bh=aewtGmkXHU99iz+pcixEkgzI4pr68Jf2xyVmD41i4OA=; h=DKIM-Signature:Message-ID:Date:Subject:To:From:MIME-Version; b=hg/QRmwAsn2J8hTHN/cfhVWzfEc40eYQ0fNYwLB5t56HcTpqey+h1tZj2hfQtYknzdGl9SV18v4c8Ti9pAFMlq8/dn9ioAkMBSctX8M/nJ2ZBhkvG5q+oOgQ3aZc63VZy9/1UlSMVvA2rfJ2wL6HVXMCipHnhft3c+0Adl8+soo= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iRwkySkFwK9unxBCaGa6kOpKysGwJHugSrlKYEpGwfCeuG46clVhc6Ics5Ka5ye6+gzXvp4VB8/XVfA1R6cRH56NXxzAhWZ3RfRelzKp4VcmOLeOfcsRxGONQMydV1VaeIhHqQvTVxOyTc/uG7wWhtRHSsa5NvLMbAxF80qcub6pD1fHzCwRp6OOM89dnVd1qn6qTsIjgOC0fqE1L3Hv7XY85rwQCDeLtZwU5bOavaKoFmhDUyjE5FrPjx0I1tenaYPDbMCQs0AkY+QAqCLSpT93YIc1o4hSVRqAL9i+sjVDlfycGWhxF1lj4R0il8a/BS+PcAAAScX9fztHfXhpyA== 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=MaQsD0Q4o2uWj8nMqPEW6/e1d6hQ1gC8ncarYP5BDbc=; b=gwlwrYOFaeNlxOlXMLBxk6MaIM5lT6retKSYCAOuxhFOYsv0AwrFCTptVnS2tnNKGttUUdK0PGFHqT8dNB9Uuc2hmS5n/eNmj+pA+UHZzv26rMTIclXaossxEnmdfAE/wlJwDnGBRYvSLgwLUoo9GrYFpfl5xVcO5WJ+egFCUXvnDByWb+J5N2LnfvDRfyBS+sM1EGhxSzC7zTsnv9eF04k8a2EaRLUu4IijFTGj1k7xj49Tg/0PYnpju9SY1t3uC3aV2WnLjJaFDOSsRkTL/dm8DAW+ewNV93IWcZw3J2t/vVq8aIOW9URIbXZbIRC6vVSM1+kxIY5z4R11FOymew== 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=MaQsD0Q4o2uWj8nMqPEW6/e1d6hQ1gC8ncarYP5BDbc=; b=1j7qnR46luM38s1XgX7XnTcDMz1JVV+k3V87cMERLxi7/CUQBal/dqmIHc7VkbXliRK7ziVpD44Jl1pSLJ80hcO0dKY4pzZz+Wd7mc/3ZGD/laVkDmu6wT2OErayVu+iW0SAGH7vqgWhlo2j0AwT/gBXtbyVz/pZh9NY/OpCKO5WXpYl4aEE/rRTzByhXjyjWMcAwSDA/4ozue85q+TrR+jc3y8WksvOVF0aJpRg3K7k4r71EN3CM9DJF1m+q4EADAIt7IUGevxgT8tML/LTNs5LiFX+5p1KIFBai/edgKBqEebLXVvf5Z9vplZVMbCcq3nkGfsePoX/7Z5UeQO81g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by AM9PR04MB8985.eurprd04.prod.outlook.com (2603:10a6:20b:408::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7002.7; Thu, 9 Nov 2023 07:52:27 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::eb8e:fa24:44c1:5d44]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::eb8e:fa24:44c1:5d44%3]) with mapi id 15.20.6977.018; Thu, 9 Nov 2023 07:52:27 +0000 Message-ID: <15e07918-1322-2c5f-6066-6b3f07430d63@suse.com> Date: Thu, 9 Nov 2023 08:52:25 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: ld: Avoid overflows in string merging Content-Language: en-US To: Michael Matz Cc: binutils@sourceware.org References: From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0025.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::23) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|AM9PR04MB8985:EE_ X-MS-Office365-Filtering-Correlation-Id: 643b02f7-8ade-4f2c-3317-08dbe0f8d1b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /1dECVi/dJsB7N54yuYiPFwLPshKJ9c368Z6ozcHHsfcmYXq8ilIW6jFgQlYmR2juCW9rFNwiJ68AmkQqLaiC6wiO9glVe2aKjIkWXHyoMQW/CuEYPqWvnLBNLlaDg/IDENzrw4lLyhtRwPczKyidKRhHby4f20rLko2Z7P0p71I2g0DrTm5wrMc7sr9dEp9uUAacvH77EY0TnF/DzCN24g4hYSec0cwre4QfdLfd9pk3u+Li1ZMhp0EJ9DPZn2jnfpMrsuU0GgmI2EDk2u6GDjy/0tWHWr4vbn/ou8DNf9xKhC/uVxztcJy1+97Dk3siiWqo0Auv72GXxoggSbl/EZA96q3dfbNrNkMjH9Cht2nyRPivFaHNVipwqN7IEXDdwmLDGJdmX3BgnbpZUhJCyeSmDYa0HsC6vs9SOLpDHRzQjgkcXGQ2UEug5kufeApMrahW4/eRGHu2HJfKdY9KBnDGDkVX3eptiAb7yalZT/iy57inYrfFlBXniE6gl589lfVOoPqvj1KlPlUUgCoGnqjQ0H6lzDWbVnUMcWVBzFWj+ZPdjF9o1c2wQrDeGcBrTPKUzSuKDWago13WXfQQkEjnkemRgPpmvobdt+gBmzl5Ptgtfn8KH8Dq1SbAGHxFfbR2pjAPUXFmnD2gXWf+g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8790.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(366004)(346002)(376002)(396003)(39860400002)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(478600001)(53546011)(6512007)(6506007)(2616005)(6486002)(26005)(2906002)(5660300002)(41300700001)(66476007)(66946007)(66556008)(6916009)(316002)(8676002)(4326008)(8936002)(38100700002)(36756003)(86362001)(31696002)(31686004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OTc3cnVRMUNocWtjNDZQbnk1UG9vWDlTZllIU0JzZ1dZblJnek9FV1FsT3FM?= =?utf-8?B?cXpQL2I4VDFzQ1VrSlJQRG1ia3B0ZGo5OFczT2d3a0xINDJwZ3BZNnJkVEM5?= =?utf-8?B?NHAvdmVoSWYyNDBZTXppM0RYajh0YVhrY2d1U05xb1hRR2EzU0pLOEpGVVU5?= =?utf-8?B?VU5lSW43ZTREZmtVaG04ZXZhVTFJbHFDbldMbE9ON2ZDRmNGMDNnR2ZYZ2ZC?= =?utf-8?B?dGRUaCs5UWZtcVRiYTBYSzBtd0VCaDNEM0NOQmRqc08yb1hpWE5obEdQMGt1?= =?utf-8?B?N1M4S3NPaEF6d1ZkRjZwTGxiNFJxM2tBc2d1YkUzRHFOU045Uk5haHE0WCtk?= =?utf-8?B?NDBiSEJBNE1ZSW15MUcvNlo2eTc4Y1N5OVNSdng1enB4MlVuS0svUXlZb3BC?= =?utf-8?B?Ly9peGk4bnhlbk1iWTlUajJoVU5jL2c4V1lNSktoeElPT2gyQVQrVDE5YU5L?= =?utf-8?B?NkZRcGNmUFdIT1BnamZqVHM4VG0zTFc0cVcrdVlpTmx2b20rbWNUM2dWdCtU?= =?utf-8?B?dlU3TXNETTR0WEJkVGgvTGFjOEVmUm1LTzlLQWRJODFBTkJ1OWRmcDU3RC93?= =?utf-8?B?dE8zbXNDTVg3M2JuUnQwemdQbzJCaWpENXRKc1NJVm5NVDJjMkMvbmZqbFhi?= =?utf-8?B?S21FaWpNU2R1aDNjNWF6TUlXL01iYzF4TVBFSnFROFBaTk1mMnhxZlhYL2t6?= =?utf-8?B?cExLc050UHhWQmFqOHBObDZ5YVpnWExxS0R6WHJaUjN0YXU5SkIxRTI1dXpH?= =?utf-8?B?UnBiSVJqZ2JYWkdGSm1UM2FQYS95LzBzMHYyMHE1eWVTeEdWeXRzMlF1OHd6?= =?utf-8?B?L3A3aHBtTnZ0bXlCM0FycmVBT1pCS0xFTFlNQ0M3bTNiZnI1ZjlkVDN2UHhh?= =?utf-8?B?bHZkN05ZZ0JsZHA3ZW1YZUdFQldOMUlXTHpTNzA1U2pBR3VXaVBkcHVmSUpS?= =?utf-8?B?YTNJTmpVeHdHUlMxUlpIOVNmeDNKMWdXdTJYY1lkNUtobjdGWmRGR0FxN3Nj?= =?utf-8?B?ZlN1OTgrSGlPV2hESHpQVHBGcE1vUzdWSXJ0cjdBRzV6THl2TGdmQnRhNE0r?= =?utf-8?B?Wk85cWpkL1RyZ0ROTjZXU3VIMDh2Q2twSFM3ckV0RERNM25NaUcwRytBcW52?= =?utf-8?B?ZmhjTjlaV1o4Q0dCd0pDR1Y0OUN0dlV3QUd1c09zdmZqRjEvM2xRWG9aMUY3?= =?utf-8?B?SnI4UWRjTitoemlWWmEwWDBLU2krS0ZMcEs5Q0ZRQmluV1prVzNmcHgyelJW?= =?utf-8?B?SzNua3BMSjM4ZTJuTytXazNTakR4YWFsN1ExcWp5YUc4TGVXMjRZOVhDWjVE?= =?utf-8?B?Mm9qYzFDUGVHS3BCSDV5MHROQlU4L2JrMitKZ09lYW5XdmVMM1EyS1FRZjRW?= =?utf-8?B?Skh3dWdvYzhEQ0Vjbk41YnoyYThMZzFTTS9zTy9BSWtyRU85RnIzbzU2bW1p?= =?utf-8?B?N1lnQlltdkcyNU9HU2VWMUduVGJ0eEd0ZVpEOFRGOTZUWFBSYWlhcitRSnhF?= =?utf-8?B?aDhFVWxQc25XemRqMVM1aUdnbVJreC83T0tEMDB2SjAvUk5PTnNWQXZkM0dH?= =?utf-8?B?R0tFWVU5T3lwVkdpNThxNWtOMGlLblNuVkFDenhaeFZKb0NNNDBZQlNjMW5o?= =?utf-8?B?bDdFclNKd0szTS9qanlYVUg3RFFKNnhQUmJMelpMUWprclI1djhCTmVSRVZp?= =?utf-8?B?RnBjOElnVitWMW9zMm94Wkh2SVlTdDRkUnI1emZKU3NVTEJ5U2N0ZFN4bU1N?= =?utf-8?B?TmJUMnZ5L1l1b00wWm1ta2VzZDRXSzBjTlJkYnNCTlFraXZKSUNpT2dHc1hk?= =?utf-8?B?WHV5b2FZZUJVTHkxTmo1QnVsNEJGUHE1YzVLeTllVVZLOFV4S2FmejBQcWZl?= =?utf-8?B?Rk9zQ0pTMCtJZjhYWXArSnd1REJkSERUckJESldRMGx1S3FMcWhFbGhIcjI2?= =?utf-8?B?ZllyZEUzNlJKajdiSkQ4SmxzSFhKak42M3AyTVBEUDRScTYwU2dYKzEvK09J?= =?utf-8?B?cjIvbGNaYXB4RXpjaXU1WGxGeDY3SkhqRTF0WFdjYzNEKytlNDVabklrVWNC?= =?utf-8?B?VXNaSnEySHNNQ0xBWTFmVENFeDIxb21jeXA1Sjh4MjRsRk05UnR5alBybUZ3?= =?utf-8?Q?kx+STcV1LQlyWBthghE2cfDEU?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 643b02f7-8ade-4f2c-3317-08dbe0f8d1b1 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2023 07:52:27.8789 (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: Bni9o0fROESTMA0QWdIrCLYSjJzJlLOQuazDcm37Swl9NtG4t93StHJUhBneE96jEy9wDOKySPzjuEZeiuru9Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8985 X-Spam-Status: No, score=-3028.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,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: On 08.11.2023 15:31, Michael Matz wrote: > On Wed, 8 Nov 2023, Jan Beulich wrote: > >>> --- a/bfd/merge.c >>> +++ b/bfd/merge.c >>> @@ -167,7 +167,7 @@ static bool >>> sec_merge_maybe_resize (struct sec_merge_hash *table, unsigned added) >>> { >>> struct bfd_hash_table *bfdtab = &table->table; >>> - if (bfdtab->count + added > table->nbuckets * 2 / 3) >>> + if (bfdtab->count + added > table->nbuckets / 3 * 2) >>> { >>> unsigned i; >>> unsigned long newnb = table->nbuckets * 2; >>> @@ -175,7 +175,7 @@ sec_merge_maybe_resize (struct sec_merge_hash *table, unsigned added) >>> uint64_t *newl; >>> unsigned long alloc; >>> >>> - while (bfdtab->count + added > newnb * 2 / 3) >>> + while (bfdtab->count + added > newnb / 3 * 2) >>> { >>> newnb *= 2; >>> if (!newnb) >> >> Isn't this overly aggressive? We want to resize when past two thirds, >> but why would we go by two thirds even within this loop? > > Because doubling newnb once doesn't ensure that count+added will fit. > Consider count==1, oldbuckets==0x2000, and added==1<<24. The above loop > seemed more obvious to me than the other method: bit magic to round up > (count+added)*3/2 to next power of two (which still would need a loop). I didn't mean to suggest to remove the loop. What I was getting at is that the loop condition is more strict that necessary, as I tried to explain ... >> We've doubled once already, and all we care about is that new capacity >> be enough to cover "added". The more that - as the comment there says - >> the caller already overestimates heavily. ... here. The "whether" is deliberately at 2/3 aiui, and that's fine. The "how much", however, could be reduced to the next power of 2 that fits, to avoid excessive growth. Jan