[ 
https://issues.apache.org/jira/browse/XERCESJ-1401?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Karl Wright updated XERCESJ-1401:
---------------------------------

    Attachment: _rsscache_8151189277828639951tmp
                _rsscache_2819932159454940416tmp
                _rsscache_966918958277376189tmp

These are some documents (which are in fact not really XML) that cause the 
failure.


> When operating with "continue-after-fatal-error" set to true, it is possible 
> to cause xerces to go into an infinite loop
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: XERCESJ-1401
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1401
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: SAX
>    Affects Versions: 2.9.1
>         Environment: jdk 1.5.0_20
>            Reporter: Karl Wright
>         Attachments: _rsscache_2819932159454940416tmp, 
> _rsscache_8151189277828639951tmp, _rsscache_966918958277376189tmp, 
> XMLStreamTest.java
>
>
> If the feature "continue-after-fatal-error" is enabled, AND a non-default 
> error handler is used under SAX, it is possible with the right feed to cause 
> the parser to hang in a tight infinite loop.
> Below see the fix delta (from our SVN, so the numbers will not match up with 
> yours):
> Index: src/org/apache/xerces/impl/XMLDocumentScannerImpl.java
> ===================================================================
> --- src/org/apache/xerces/impl/XMLDocumentScannerImpl.java      (revision 
> 102478)
> +++ src/org/apache/xerces/impl/XMLDocumentScannerImpl.java      (working copy)
> @@ -783,6 +783,8 @@
>                                  else {
>                                      
> reportFatalError("MarkupNotRecognizedInProlog",
>                                                       null);
> +                                    // Don't loop forever!
> +                                    fEntityScanner.scanChar();
>                                  }
>                              }
>                              else if 
> (isValidNameStartChar(fEntityScanner.peekChar())) {
> @@ -802,6 +804,8 @@
>                              else {
>                                  
> reportFatalError("MarkupNotRecognizedInProlog",
>                                                   null);
> +                                // Don't loop forever!
> +                                fEntityScanner.scanChar();
>                              }
>                              break;
>                          }
> @@ -872,6 +876,8 @@
>                          }
>                          case SCANNER_STATE_REFERENCE: {
>                              reportFatalError("ReferenceIllegalInProlog", 
> null);
> +                            // Don't loop forever!
> +                            fEntityScanner.scanChar();
>                          }
>                      }
>                  } while (complete || again);
> @@ -1277,6 +1283,8 @@
>                              else {
>                                  reportFatalError("MarkupNotRecognizedInMisc",
>                                                   null);
> +                               // Skip forward one character, otherwise we 
> loop forever.
> +                               fEntityScanner.scanChar();
>                              }
>                              break;
>                          } 
> I will also be attaching a test harness and example documents as followup 
> comments.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to