Description:
When deploying libsieve to parse files under riscv64 architecture, it is found that no matter what the input is, a syntax error will be returned.
Running ./example script1.sv messagea.mbox
Validating script...Error is SCRIPT PARSE: Line is 8
Message is syntax error
not valid.
Executing script...
Error is SCRIPT PARSE: Line is 15
Message is syntax error
no actions taken; keeping message.
Action is KEEP
Test failed for script1.sv with messagea.mbox
environment
- libsieve-2.3.1-6
- Platform: RISC-V 64
- log files:
My operating environment is an riscv64 environment virtual machine of the arch architecture of Windows WSL.
reproduce
The process is as follows:
- Prepare the necessary environment
- run
./configure --prefix=/usr
- run
(cd src/sv_parser && for i in ls -1 *.l | sed 's|.l||'; do flex --header-file=$i.h -o $i.c $i.l; done)
- run
make
- run
./src/sv_test/example ./src/sv_test/script1.sv ./src/sv_test/messagea.mbox
debug
After experimentation, it is known that there is no problem from extracting the script file to storing buf. However, after yyparse of the libsieve_sieveparse function, a syntax error is always output. This is probably due to the memory and byte offset problems caused by the architecture. As a result, the subsequent libsieve_callback_do and cur_call.values have problems, and the script finally returns NULL.
Description:
When deploying libsieve to parse files under riscv64 architecture, it is found that no matter what the input is, a syntax error will be returned.
environment
My operating environment is an riscv64 environment virtual machine of the arch architecture of Windows WSL.
reproduce
The process is as follows:
./configure --prefix=/usr(cd src/sv_parser && for i inls -1 *.l | sed 's|.l||'; do flex --header-file=$i.h -o $i.c $i.l; done)make./src/sv_test/example ./src/sv_test/script1.sv ./src/sv_test/messagea.mboxdebug
After experimentation, it is known that there is no problem from extracting the script file to storing buf. However, after yyparse of the libsieve_sieveparse function, a syntax error is always output. This is probably due to the memory and byte offset problems caused by the architecture. As a result, the subsequent libsieve_callback_do and cur_call.values have problems, and the script finally returns NULL.