Commit e4d60a2
committed
[XERCESC-2241] Fix integer overflows in DFAContentModel class
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>
```1 parent 045bdf8 commit e4d60a2
1 file changed
+24
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
45 | 46 | | |
46 | 47 | | |
47 | 48 | | |
| |||
661 | 662 | | |
662 | 663 | | |
663 | 664 | | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
664 | 668 | | |
665 | 669 | | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
666 | 674 | | |
667 | 675 | | |
668 | 676 | | |
| |||
1364 | 1372 | | |
1365 | 1373 | | |
1366 | 1374 | | |
1367 | | - | |
1368 | | - | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
1369 | 1384 | | |
1370 | 1385 | | |
1371 | 1386 | | |
1372 | 1387 | | |
1373 | 1388 | | |
1374 | | - | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
1375 | 1396 | | |
1376 | 1397 | | |
1377 | 1398 | | |
| |||
0 commit comments