AFLplusplus / AFLplusplus/Grammar-Mutator

optimized syntax '+' cause 'random_recursive_mutation' error

Đang mở
#42 5 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
274
Fork
24
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

going further, I found a way to mitigate;

based on the above issues, we create simpler test cases, `test.json`:
```
{
"": [["I ", "", "like C++\n"]],
"": [["", ""], []],
"": [["very "]]
}
```

tanslate to `test.g4`:
```
grammar test;
entry: 'I ' stmt1 'like C++\n' EOF
;
stmt1:
| NODE stmt1
;
NODE : 'very '
;
```

and input `40960_very.txt`:
```
I very very ...(*40956)... very very like C++
```

running with `antlr4-parse`:
![Screen Shot 2024-01-08 at 17 56 39](https://github.com/AFLplusplus/Grammar-Mutator/assets/21287921/b507416e-4668-4cc6-8964-6f144416fc4b)

from the perspective of antlr4, we can use the `+` syntax to describe `test.g4`, and ignore this prefix matching, as follows `test.g4`:
```
grammar test;
entry: 'I ' stmt1 'like C++\n' EOF
;
stmt1:
| (NODE)+
;
NODE : 'very '
;
```

running again with `antlr4-parse`:
![Screen Shot 2024-01-08 at 17 59 40](https://github.com/AFLplusplus/Grammar-Mutator/assets/21287921/a0745df3-c0ee-4ccc-ac94-e88ee053dc85)

so I made a patch to implement the above ideas, please refer to https://github.com/0x7Fancy/Grammar-Mutator/commit/6eae7d14f579b4d3d1196fc1a288c61044a1afe1;

I have only implemented the optimization of head recursion and tail recursion here, which is simple and easy to understand. for intermediate recursion, I think it can be rewritten as head/tail recursion in json

of course, this is just a mitigation measure. When the mutation generates a sufficiently complex syntax tree, it may still cause antlr4 to get stuck in syntax parsing.

_Originally posted by @0x7Fancy in https://github.com/AFLplusplus/Grammar-Mutator/issues/17#issuecomment-1880701080_

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.