I fixed the problem.

On Tue, Oct 02, 2018 at 10:18:20AM -0700, Ben Pfaff wrote:
> Sorry about that.  I'll fix it as soon as I can.
> 
> On Sun, Sep 30, 2018 at 08:21:48AM +0200, John Darrington wrote:
> > This fix seems to be causing test 1075 to fail.
> > 
> > On Sat, Sep 29, 2018 at 03:47:25PM -0700, Ben Pfaff wrote:
> >      On Sat, Sep 29, 2018 at 04:26:28PM +0200, John Darrington wrote:
> >      > I've just pushed a change fixing some sporadic crashes in the gui.   
> >      > 
> >      > The bug (which took a bit of tracking down) turned out to be caused 
> > by
> >      > a buffer overrun in lexer.c (lex_source_get_).   In particular, we 
> > have
> >      > the code:
> >      > 
> >      >  const char *newline = rawmemchr (line, '\n');
> >      > 
> >      > But the documentation for rawmemchr says that it's unpredictable if
> >      > line does not contain a '\n'.
> >      > 
> >      > So this means our syntax parser can crash if we present it with a
> >      > fragment which is not newline terminated.   I wasn't aware that we
> >      > had such a limitation.     Does this need to be fixed, or at least
> >      > explicitly documented ?
> >      
> >      Until recently, the lexer and its lower level infrastructure required
> >      source files to end in \n.  Because of this limitation, all the code
> >      that read source files added a trailing newline if one wasn't already
> >      present.  I fixed the limitation in commit e0f9210e814d ("lexer: Add
> >      support for embedded \0 bytes and missing trailing new-line.") because
> >      it made null bytes hard to handle properly.  At the same time, I 
> > removed
> >      the code to automatically add a trailing newline, because it was no
> >      longer necessary.
> >      
> >      In my code review, I missed this code that still assumed a trailing
> >      newline, and none of the tests caught it for me.  I pushed what I
> >      believe to be a fix now; I don't have enough time right at the moment 
> > to
> >      add some more tests, but I'll try to go back and add them later.
> > 
> > -- 
> > Avoid eavesdropping.  Send strong encrypted email.
> > PGP Public key ID: 1024D/2DE827B3 
> > fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
> > See http://sks-keyservers.net or any PGP keyserver for public key.
> > 

_______________________________________________
pspp-dev mailing list
pspp-dev@gnu.org
https://lists.gnu.org/mailman/listinfo/pspp-dev

Reply via email to