Patch for inf loop in rcsparse

Linas Vepstas <[email protected]> Fri, 21 Nov 2014 12:29:08 -0600
Newsgroups gmane.comp.version-control.subversion.cvs2svn.devel
Message-ID <CAHrUA360w+ZhxBpQM_SqGGd5mOWv--cuhbVTb3Xtt0SPemJBYA@mail.gmail.com>
Hi,

I tripped over an inf loop in the cvs2svn_rcsparse part of the code.
The fix seems to be a simple cut-n-paste of an error check done a few
dozen lines earlier.  The patch is:


--- a/cvs2svn_rcsparse/default.py.orig    2014-11-21 12:18:02.880417060 -0600
+++ b/cvs2svn_rcsparse/default.py    2014-11-21 12:26:59.226222392 -0600
@@ -88,6 +88,10 @@ class _TokenStream:

         # we stopped at the end of the buffer, so we may have a partial token
         buf = self.rcsfile.read(self.CHUNK_SIZE)
+        if buf == '':
+          # signal EOF by returning None as the token
+          del self.buf   # so we fail if get() is called again
+          return None
         lbuf = len(buf)
         idx = end = 0

Without this, this particular block gets stuck in an infinite loop.
Presumably, this is a rare, data-dependent ocurance ...

--linas

------------------------------------------------------
http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1667&dsMessageId=3091674

To unsubscribe from this discussion, e-mail: [[email protected]].