On 15/11/2024 14:20, Yuancheng Jiang wrote:
> Hi all,
> 
> 
> I have been submitting hundreds of bugs (seeĀ 
> https://github.com/php/php-src/issues/created_by/YuanchengJiang 
> <https://github.com/php/php-src/issues/created_by/YuanchengJiang>) during the 
> past months and I first thank all the developers who take time to fix these 
> issues to make PHP better.
> 
> 
> I am thrilled to introduce one fully automated fuzz testing tool, FlowFusion, 
> for discovering various bugs of the PHP interpreter.
> 
> 
> The core idea behind FlowFusion is to leverage dataflow as an effective 
> representation of test cases (.phpt files) maintained by PHP developers, 
> merging two (or more) test cases to produce fused test cases with more 
> complex code semantics. We connect two (or more) test cases via interleaving 
> their dataflows, i.e., bringing the code context from one test case to 
> another. This enables interactions among existing test cases, which are 
> mostly the unit tests verifying one single functionality, making fused test 
> cases interesting with merging code semantics.
> 
> 
> FlowFusion additionally fuzzes all defined functions and class methods using 
> the code contexts of fused test cases. Available functions, classes, and 
> methods are pre-collected and stored in sqlite3 with necessary information 
> like the number of parameters. FlowFusion will be automatically upgrading if 
> phpt files keep updating. Any new single test can bring thousands of new 
> fused tests.
> 
> 
> The search space of FlowFusion is huge, which means it can cover various 
> corner cases. Reasons for the huge search space are three-fold: (i) two 
> random combinations of around 20,000 test cases can generate 400,000,000 test 
> cases, and we can combine even more; (ii) the interleaving has randomness, 
> given two test cases, there could be multiple ways to connect them; and (iii) 
> FlowFusion also mutates the test case, fuzzes the runtime 
> environment/configuration like JIT.
> 
> 
> *I can open-source the tool under my personal repository. I wonder by any 
> chance if I can contribute it as the official PHP tool underĀ 
> https://github.com/php <https://github.com/php>, and I would be happy to 
> maintain it for a long time.*
> 
> *
> *
> 
> Best,
> 
> Yuancheng
> 

Hi Yuancheng

Thanks for all the reports you made, certainly an impressive feat!
I don't know what other maintainers think, but FWIW I'd be in favor 
incorporating this into our toolchain.

Kind regards
Niels

Reply via email to