2424#include <stdlib.h>
2525
2626#include "fuzzer-sapi.h"
27+ #include "ext/json/php_json.h"
2728#include "ext/json/php_json_parser.h"
2829
2930int LLVMFuzzerTestOneInput (const uint8_t * Data , size_t Size ) {
@@ -36,10 +37,25 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
3637 memcpy (data , Data , Size );
3738 data [Size ] = '\0' ;
3839
39- for (int option = 0 ; option <=1 ; ++ option ) {
40+ int options [12 ] = {
41+ 0 ,
42+ PHP_JSON_OBJECT_AS_ARRAY ,
43+ PHP_JSON_OBJECT_AS_ARRAY | PHP_JSON_BIGINT_AS_STRING ,
44+ PHP_JSON_OBJECT_AS_ARRAY | PHP_JSON_BIGINT_AS_STRING | PHP_JSON_INVALID_UTF8_IGNORE ,
45+ PHP_JSON_OBJECT_AS_ARRAY | PHP_JSON_BIGINT_AS_STRING | PHP_JSON_INVALID_UTF8_SUBSTITUTE ,
46+ PHP_JSON_OBJECT_AS_ARRAY | PHP_JSON_INVALID_UTF8_IGNORE ,
47+ PHP_JSON_OBJECT_AS_ARRAY | PHP_JSON_INVALID_UTF8_SUBSTITUTE ,
48+ PHP_JSON_BIGINT_AS_STRING ,
49+ PHP_JSON_BIGINT_AS_STRING | PHP_JSON_INVALID_UTF8_IGNORE ,
50+ PHP_JSON_BIGINT_AS_STRING | PHP_JSON_INVALID_UTF8_SUBSTITUTE ,
51+ PHP_JSON_INVALID_UTF8_IGNORE ,
52+ PHP_JSON_INVALID_UTF8_SUBSTITUTE
53+ };
54+
55+ for (int index = 0 ; index < 12 ; ++ index ) {
4056 zval result ;
4157 php_json_parser parser ;
42- php_json_parser_init (& parser , & result , data , Size , option , 10 );
58+ php_json_parser_init (& parser , & result , data , Size , options [ index ] , 10 );
4359 if (php_json_yyparse (& parser ) == SUCCESS ) {
4460 zval_ptr_dtor (& result );
4561 }
0 commit comments