Thanks Dave for the path. I've applied it to the 4.6 branch and it should go out in 4.6.1.
On Tue, Sep 4, 2012 at 2:12 PM, Dave Trudgian < [email protected]> wrote: > Sorry, > > Should be an extra comment line in the patch to make it more obvious... > It's 11 chars + 9 chars + 1 char for the terminating null terminator = 21 > chars! > > DT > > > On Tuesday, September 4, 2012 3:59:16 PM UTC-5, Dave Trudgian wrote: >> >> 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/-/XXnZTDbx2ToJ. > > 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. > -- You received this message because you are subscribed to the Google Groups "spctools-discuss" group. 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.
