Menu

#857 XML-invalid chars in source file names could leak into project TMX

4.1
closed-fixed
None
5
2017-06-23
2017-04-17
No

File paths can contain characters outside of the valid range for XML. When storing an alternative translation in the project TMX, the name of the source file is recorded in a <prop type="file"> element; when the file name contains XML-invalid characters, this would cause the project TMX to fail to load with an error similar to the following:

19768: Error: Failed to load specified project! (TF_LOAD_ERROR)
19768: Error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[33,29] 
19768: Error: Message: An invalid XML character (Unicode: 0x7) was found in the element content of the document. 
19768: Error:   at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:596) 
19768: Error:   at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83) 
19768: Error:   at org.omegat.util.TMXReader2.parseProp(TMXReader2.java:321) 
19768: Error:   at org.omegat.util.TMXReader2.parseTu(TMXReader2.java:236) 
19768: Error:   at org.omegat.util.TMXReader2.readTMX(TMXReader2.java:159) 
19768: Error:   at org.omegat.core.data.ProjectTMX.<init>(ProjectTMX.java:95) 
19768: Error:   at org.omegat.core.data.RealProject.loadTranslations(RealProject.java:1055) 
19768: Error:   at org.omegat.core.data.RealProject.loadProject(RealProject.java:371) 
19768: Error:   at org.omegat.core.data.ProjectFactory.loadProject(ProjectFactory.java:68) 
19768: Error:   at org.omegat.gui.main.ProjectUICommands$6.lambda$0(ProjectUICommands.java:478) 
19768: Error:   at org.omegat.core.Core.executeExclusively(Core.java:373) 
19768: Error:   at org.omegat.gui.main.ProjectUICommands$6.doInBackground(ProjectUICommands.java:478) 
19768: Error:   at javax.swing.SwingWorker$1.call(SwingWorker.java:295) 
19768: Error:   at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
19768: Error:   at javax.swing.SwingWorker.run(SwingWorker.java:334) 
19768: Error:   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
19768: Error:   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
19768: Error:   at java.lang.Thread.run(Thread.java:745) 

Discussion

  • Aaron Madlon-Kay

    Fixed in r9819. The text is normalized (XML-invalid chars are replaced with U+0020 SPACE) both when writing the TMX, and when creating EntryKeys for loaded source (thus allowing alternative translations loaded from TMX to match entries as intended).

     
  • Aaron Madlon-Kay

    • summary: Source files with XML-invalid chars in name could leak into project TMX --> XML-invalid chars in source file names could leak into project TMX
     
  • Didier Briel

    Didier Briel - 2017-06-23
    • status: open-fixed --> closed-fixed
     
  • Didier Briel

    Didier Briel - 2017-06-23

    Fixed in the released version 4.1.2 of OmegaT.

    Didier

     

Log in to post a comment.