bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Invalid inputs FAILED (input.at:102) on Solaris


From: Akim Demaille
Subject: Re: Invalid inputs FAILED (input.at:102) on Solaris
Date: Fri, 20 Nov 2020 07:01:51 +0100

Hi Martin,

Thanks for the report!

> Le 16 nov. 2020 à 16:05, Martin Rehak <martin.rehak@oracle.com> a écrit :
> 
> Hello,
> 
> 4. input.at:83: testing Invalid inputs ...

Yeah, that test, in itself, was tricky to write.  Someone at some
point reported a file a fuzzer built, and it was full of garbage.
So much that I had troubles writing this file in the test suite
itself (i.e., unrelated to Bison).

> This is the input.y:
> 
> $ xxd input.y
> 00000000: 0001 02ff 3f0a 2200 220a 2525 0a3f 0a64  ....?.".".%%.?.d
> 00000010: 6566 6175 6c74 3a20 2761 2720 7d0a 2526  efault: 'a' }.%&
> 00000020: 0a25 612d 646f 6573 2d6e 6f74 2d65 7869  .%a-does-not-exi
> 00000030: 7374 0a25 2d0a 257b 0a                   st.%-.%{.

It looks like what is expected.  It's "source" is:

\000\001\002\377?
"\000"
%%
?
default: 'a' }
%&
%a-does-not-exist
%-
%{


> This test (3) passes on bison-3.4.2. This is stderr from there:
> 
> input.y:1.1-2: error: invalid characters: '\0\001\002\377?'
> input.y:3.1: error: invalid character: '?'
> input.y:4.14: error: invalid character: '}'
> input.y:5.1: error: invalid character: '%'
> input.y:5.2: error: invalid character: '&'
> input.y:6.1-17: error: invalid directive: '%a-does-not-exist'
> input.y:7.1: error: invalid character: '%'
> input.y:7.2: error: invalid character: '-'
> input.y:8.1-9.0: error: missing '%}' at end of file
> input.y:8.1-9.0: error: syntax error, unexpected %{...%}

These part does not seem to the problem.  It is when bison wants
to quote the source file that it seems to drop the \0.  Could you
please try this?

$ printf "\0\n" > /tmp/foo.y
$ LC_ALL=C ./src/bison -fcaret /tmp/foo.y 2>&1
/tmp/foo.y:1.1: error: invalid character: '\0'
    1 | 
      | ^
$ LC_ALL=C ./src/bison -fcaret /tmp/foo.y 2>&1 | od -ax -
0000000   /   t   m   p   /   f   o   o   .   y   :   1   .   1   :  sp
           742f    706d    662f    6f6f    792e    313a    312e    203a
0000020   e   r   r   o   r   :  sp   i   n   v   a   l   i   d  sp   c
           7265    6f72    3a72    6920    766e    6c61    6469    6320
0000040   h   a   r   a   c   t   e   r   :  sp   '   \   0   '  nl  sp
           6168    6172    7463    7265    203a    5c27    2730    200a
0000060  sp  sp  sp   1  sp   |  sp nul  nl  sp  sp  sp  sp  sp  sp   |
           2020    3120    7c20    0020    200a    2020    2020    7c20
0000100  sp   ^  nl
           5e20    000a
0000103

As you can see in the od output, I do get the NUL byte in the quoted
source line:

0000060  sp  sp  sp   1  sp   |  sp ***nul***  nl  sp  sp  sp  sp  sp  sp   |

Do you have it too?


Cheers!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]