Here's a patch that fixes the problem (for me).

The problem occurs where TandemResultsParser writePepXML() code is sending 
a filename and a string buffer to rampConstructInputFileName in the 
RAMPFace code. It's trying to add prefixes/extension to the tandem filename 
in order to find the corresponding mzXML/mzML file. Unfortunately the 
buffer declaration is too short. The longest prefix/extension combination 
tried is 21 characters. The buffer is declared in TandemResultsParser only 
as the original filename length +20 chars.

This was difficult to hunt down, as the prefixes are specified in 
TandemResultsParser, with the suffixes in RAMPFace - also the crash occurs 
where the RAMPFace code tries adding additional '/' at the start of the 
string, over and above the prefixes that are passed in by the 
TandemResultsParser code. This seems pointless, as it will result in search 
paths above from the root directory, e.g. 

/../../EColi_07_10_12_1microlitre_01.tandem.mzXML.gz

... but I've left this behavior and just modified the buffer size.

Whether or not the problem code causes a complete crash will depend on what 
else is around in the memory at the relevant location at the time. I guess 
in my case I saw no problems with gzipped files due to where things were 
being allocated in memory from my particular build of TPP on this machine.

DT



Apply to src/Parsers/Algorithm2XML/Tandem2XML/TandemResultsParser.cxx
NB: line numbers might be slightly off. This is against previous TPP 
release.

@@ -678,7 +678,10 @@ bool TandemResultsParser::writePepXML()
                if (strMzXMLFile.length() >= 5 && 
strMzXMLFile.compare(strMzXMLFile.length() - 5, 5, ".xtan") == 0)
                        strMzXMLFile.erase(strMzXMLFile.length() - 5);
                int len;
-               char *fname=new char[len=strMzXMLFile.length()+20];
+               // DCT fix: buffer needs to have additional 21 chars, not 
20:
+               //          longest prefix tried is /../../xml/         11 
chars
+               //          longest suffix tried is .mzXML.gz           9 
chars 
+               char *fname=new char[len=strMzXMLFile.length()+21];
 
                rampConstructInputFileName(fname,len,strMzXMLFile.data());
                 pf = rampOpenFile(fname);




-- 
You received this message because you are subscribed to the Google Groups 
"spctools-discuss" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/spctools-discuss/-/QE0-nNpGqAIJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/spctools-discuss?hl=en.

Reply via email to