Re: BUG #18274: Error 'invalid XML content'

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Dmitry Koval <d.koval@postgrespro.ru>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2024-01-16T23:59:26Z
Lists: pgsql-bugs
On Tue, Jan 16, 2024 at 04:55:34PM +0300, Dmitry Koval wrote:
>> - Document in a comment why a fake root node is necessary (aka the
>>  current routines don't give enough control over the limits you'd
>> like to enforce).
> 
> Comment expanded (see src/backend/utils/adt/xml.c).
> 
>> - The top comment of xml_parse() still mentions
>> xmlParseBalancedChunkMemory() as an effect of 483bdb2afec9, so this
>> needs to be updated.
> 
> Updated.

I still need to evaluate a bit more this part, though that looks fine.

>> Also, it may be worth double-checking if there are other things marked
>> as deprecated in the upstream doc, and switch to "newer" things.
> 
> I found another deprecated function xmlSubstituteEntitiesDefault [1]
> (contrib/xml2). xmlSubstituteEntitiesDefault was removed and added the
> XML_PARSE_NOENT flag in functions xmlReadMemory instead it.

This one had better be done first because it is required by your
original issue, and that's what could make the buildfarm shaky.

I have checked the other XML calls in the tree and did not spot
anything else that ought to be changed, so I have extracted this stuff
from your v2 and applied it on HEAD.  Let's see how it goes.
--
Michael

Commits

  1. xml2: Replace deprecated routines with recommended ones

  2. Revert "Add support for parsing of large XML data (>= 10MB)"

  3. Add support for parsing of large XML data (>= 10MB)