-
Notifications
You must be signed in to change notification settings - Fork 101
[XERCESC-2241] Fix integer overflows in DFAContentModel class #51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
CC @rleigh-codelibre This should be relatively safe to apply |
rleigh-codelibre
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The logic of the change all looks fine, but a query regarding the type used for numeric_limits::max().
Thanks,
Roger
On .xsd files like the following ones (generated by ossfuzz, so broken), integer overflows can happen in DFAContentModel::countLeafNodes() and DFAContentModel::buildDFA() which can later cause out-of-bounds access. Found in https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52025 ``` <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:myns="http://myns" targetNamespace="http://myns" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="main_elt"> <xs:complexType> <xs:sequence> <xs:group ref="myns:mygroup" minOccurs="32767" maxOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:group name="mygroup"> <xs:sequence> <!-- related to https://issues.apache.org/jira/browse/XERCESC-1051 --> <xs:element name="elt" maxOccurs="33333"> <xs:complexType> <xs:sequence> ame="x" type="xs:int" maxOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:group> </xs:schema> ```
e4d60a2 to
d767b91
Compare
rleigh-codelibre
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the changes, this all looks to be correct to me. I'll merge it once the CI has passed (for the CI build which isn't broken).
|
@rleigh-codelibre If you can apply this to master that will make it easier for me to cherry-pick back to the branch. |
|
(My only concern re: compatibility was the reference to size_it in the max function possibly causing compatibility issues, but I'll take the risk.) |
|
I applied this to both branches. |
On .xsd files like the following ones (generated by ossfuzz, so broken), integer overflows can happen in DFAContentModel::countLeafNodes() and DFAContentModel::buildDFA() which can later cause out-of-bounds access.
Found in https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52025