From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from re-prd-fep-047.btinternet.com (mailomta29-re.btinternet.com [213.120.69.122]) by sourceware.org (Postfix) with ESMTPS id BD7AE3858D35 for ; Wed, 28 Jun 2023 13:28:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BD7AE3858D35 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=dronecode.org.uk Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=dronecode.org.uk Received: from re-prd-rgout-004.btmx-prd.synchronoss.net ([10.2.54.7]) by re-prd-fep-047.btinternet.com with ESMTP id <20230628132842.PUSR28253.re-prd-fep-047.btinternet.com@re-prd-rgout-004.btmx-prd.synchronoss.net> for ; Wed, 28 Jun 2023 14:28:42 +0100 Authentication-Results: btinternet.com; auth=pass (PLAIN) smtp.auth=jonturney@btinternet.com; bimi=skipped X-SNCR-Rigid: 63FE9A2B0DC66A89 X-Originating-IP: [81.129.146.196] X-OWM-Source-IP: 81.129.146.196 (GB) X-OWM-Env-Sender: jonturney@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgedviedrtddvgdeifecutefuodetggdotefrodftvfcurfhrohhfihhlvgemuceutffkvffkuffjvffgnffgvefqofdpqfgfvfenuceurghilhhouhhtmecufedtudenucenucfjughrpefkffggfgfhuffvtgfgsehtjeertddtfeejnecuhfhrohhmpeflohhnucfvuhhrnhgvhicuoehjohhnrdhtuhhrnhgvhiesughrohhnvggtohguvgdrohhrghdruhhkqeenucggtffrrghtthgvrhhnpeetvdeludffkefgfeevleetjefhtedvfefhfeeikeefgefhfeekffdtvefhteffvdenucfkphepkedurdduvdelrddugeeirdduleeinecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehhvghloheplgduledvrdduieekrddurddutdeingdpihhnvghtpeekuddruddvledrudegiedrudeliedpmhgrihhlfhhrohhmpehjohhnrdhtuhhrnhgvhiesughrohhnvggtohguvgdrohhrghdruhhkpdhnsggprhgtphhtthhopedupdhrtghpthhtohepnhgvfihlihgssehsohhurhgtvgifrghrvgdrohhrghdprhgvvhfkrfephhhoshhtkeduqdduvdelqddugeeiqdduleeirdhrrghnghgvkeduqdduvdelrdgsthgtvghnthhrrghlphhluhhsrdgtohhmpdgruhhthhgpuhhsvghrpehjohhnthhurhhnvgihsegsthhinhhtvghrnhgvthdrtghomhdpghgvohfkrfepifeupdfovfetjfhoshhtpehrvgdqphhrugdqrhhgohhuthdqtddtge X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean Received: from [192.168.1.106] (81.129.146.196) by re-prd-rgout-004.btmx-prd.synchronoss.net (5.8.814) (authenticated as jonturney@btinternet.com) id 63FE9A2B0DC66A89 for newlib@sourceware.org; Wed, 28 Jun 2023 14:28:42 +0100 Message-ID: Date: Wed, 28 Jun 2023 14:28:41 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 From: Jon Turney Subject: bug with printf positional arguments? X-Mozilla-News-Host: news://news://news.gmane.io:119 Content-Language: en-GB To: "newlib@sourceware.org" Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,JMQ_SPF_NEUTRAL,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: The following trivial program (extracted from a glib testcase) > #include > > int main() > { > printf ("%1$*2$.*3$s", "abc", 5, 2); > } does not produce the expected output of " ab", on 64-bit Cygwin. From a bit of staring at and stepping through get_args() in libc/stdio/vfprintf.c, it looks like the problem is (something like) we don't have the knowledge that the first positional variadic argument should be treated as a pointer, at the point that we store it's value, so it gets treated as an integer (the default), which is going to lead to truncation on LP64 platforms. A straightforward way to fix this eludes me.