Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ugpvN-007nqZ-5H for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Jul 2025 19:23:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ugpvM-0045uS-3d for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Jul 2025 19:23:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ugpvL-0045uA-Q2 for pgsql-hackers@lists.postgresql.org; Tue, 29 Jul 2025 19:23:44 +0000 Received: from sss.pgh.pa.us ([68.162.161.243]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ugpvI-001XTG-30 for pgsql-hackers@lists.postgresql.org; Tue, 29 Jul 2025 19:23:43 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.15.2/8.15.2) with ESMTP id 56TJNboZ1350068; Tue, 29 Jul 2025 15:23:37 -0400 From: Tom Lane To: Jim Jones cc: Erik Wienhold , Michael Paquier , Robert Treat , Postgres hackers Subject: Re: Regression with large XML data input In-reply-to: References: <1691195.1753383449@sss.pgh.pa.us> <1721385.1753385039@sss.pgh.pa.us> <7a9a9804-01d8-4489-a831-1a222bae6705@uni-muenster.de> <1944118.1753467686@sss.pgh.pa.us> <314265.1753669007@sss.pgh.pa.us> <457dd309-158f-43cd-81d4-df7284f30d4f@ewie.name> <483421.1753727323@sss.pgh.pa.us> <628881.1753733767@sss.pgh.pa.us> <93116cb2-e3e2-40bf-be9b-77a2f68fd10a@uni-muenster.de> <865404.1753791071@sss.pgh.pa.us> <6ac2f605-2caf-447c-abea-ad45b19833ab@uni-muenster.de> <997668.1753802857@sss.pgh.pa.us> Comments: In-reply-to Jim Jones message dated "Tue, 29 Jul 2025 20:02:30 +0200" MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <1350066.1753817017.1@sss.pgh.pa.us> Date: Tue, 29 Jul 2025 15:23:37 -0400 Message-ID: <1350067.1753817017@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Jim Jones writes: > I also didn't spot any leaks, but I was rather hesitant to remove it > after re-reading the code, since there's still a risk of leakage if the > caller fails to free parsed_nodes in case of an error. However, it seems > that only xmltotext_with_options relies on this, and even then, the > result of parsed_nodes is added to a document that gets freed in case of > failure, so it looks like we're covered. Yeah, that's a separate issue: once we assign it to *parsed_nodes, it's on the caller's head to make sure it's freed. I also spent awhile staring at xmltotext_with_options. The early exit for !indent is safer than it looks: we can only take that path in DOCUMENT mode, and we won't have any content nodes in that case. But if we hit an error somewhere between there and attaching the content nodes to the document, they'd get leaked. It looks to me like the only plausible way for that to happen is an OOM failure within libxml2 operations, which is unlikely but not impossible. So perhaps it's worth the trouble to make xmltotext_with_options more wary. regards, tom lane