Bug 1859689 - cr_xml_parser_generic_from_string fails on large inputs
Summary: cr_xml_parser_generic_from_string fails on large inputs
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: createrepo_c
Version: CentOS Stream
Hardware: Unspecified
OS: Unspecified
high
unspecified
Target Milestone: rc
: 8.3
Assignee: amatej
QA Contact: Eva Mrakova
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-07-22 17:13 UTC by Daniel Alley
Modified: 2020-11-04 03:11 UTC (History)
11 users (show)

Fixed In Version: createrepo_c-0.15.11-2.el8
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-11-04 03:09:16 UTC
Type: Bug
Target Upstream Version:


Attachments (Terms of Use)
error message (2.38 KB, text/plain)
2020-07-22 17:13 UTC, Daniel Alley
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2020:4700 0 None None None 2020-11-04 03:09:28 UTC

Description Daniel Alley 2020-07-22 17:13:27 UTC
Created attachment 1702118 [details]
error message

Description of problem:

When passing a very large XML string to cr_xml_parser_generic_from_string, an error message is printed. In this case the XML is from filelists for the "flat-remix-icon-theme" package present in Fedora 30 and 31 (and probably others but I haven't looked). This package has many tens of thousands of icon files.

Version-Release number of selected component (if applicable):

0.16.0

How reproducible:

Always

Additional info:

It looks like the file-based XML parsing function uses a buffer of a bounded size whereas the string-based XML parsing function simply passes along the entire string to xmlParseChunk()

https://github.com/rpm-software-management/createrepo_c/blob/7fbb4f9258e6d2f00b4add4da05f34adf43078db/src/xml_parser.c#L252

Comment 1 amatej 2020-07-24 11:33:11 UTC
You are correct, the buffer size is the problem. Thanks for the investigation!

Here is a PR that should help: https://github.com/rpm-software-management/createrepo_c/pull/225
It also contains a python unit test.

Comment 2 Daniel Alley 2020-07-24 13:33:34 UTC
I tested your branch against the case where we initially discovered this and I can confirm that the patch does fix the issue for us, thank you!

Comment 9 errata-xmlrpc 2020-11-04 03:09:16 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (createrepo_c bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2020:4700


Note You need to log in before you can comment on or make changes to this bug.