@@ -47,31 +47,24 @@ bool char_to_zend_long(const char *c, size_t scale_len, zend_long *ret) {
4747
4848int LLVMFuzzerTestOneInput (const uint8_t * Data , size_t Size ) {
4949 /* num1,num2,scale */
50- const uint8_t * comma1 = memchr (Data , ',' , Size );
50+ const char * n1ptr = (char * ) Data ;
51+ const char * comma1 = memchr (n1ptr , ',' , Size );
5152 if (!comma1 ) {
5253 return 0 ;
5354 }
55+ size_t n1len = comma1 - n1ptr ;
56+ Size -= n1len + 1 ;
5457
55- size_t num1_len = comma1 - Data ;
56- char * num1_str = estrndup ((char * ) Data , num1_len );
57- Data = comma1 + 1 ;
58- Size -= num1_len + 1 ;
59-
60- const uint8_t * comma2 = memchr (Data , ',' , Size );
58+ const char * n2ptr = comma1 + 1 ;
59+ const char * comma2 = memchr (n2ptr , ',' , Size );
6160 if (!comma2 ) {
62- efree (num1_str );
6361 return 0 ;
6462 }
65-
66- size_t num2_len = comma2 - Data ;
67- char * num2_str = estrndup ((char * ) Data , num2_len );
68- Data = comma2 + 1 ;
69- Size -= num2_len + 1 ;
63+ size_t n2len = comma2 - n2ptr ;
64+ Size -= n2len + 1 ;
7065
7166 zend_long scale = 0 ;
72- if (!char_to_zend_long ((char * ) Data , Size , & scale )) {
73- efree (num1_str );
74- efree (num2_str );
67+ if (!char_to_zend_long ((char * ) comma2 + 1 , Size , & scale )) {
7568 return 0 ;
7669 }
7770
@@ -104,16 +97,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
10497 fuzzer_setup_dummy_frame ();
10598
10699 zval args [3 ];
107- ZVAL_STRINGL (& args [0 ], num1_str , num1_len );
108- ZVAL_STRINGL (& args [1 ], num2_str , num2_len );
100+ ZVAL_STRINGL (& args [0 ], n1ptr , n1len );
101+ ZVAL_STRINGL (& args [1 ], n2ptr , n2len );
109102 ZVAL_LONG (& args [2 ], scale );
110103
111104 fuzzer_call_php_func_zval (func_name , 3 , args );
112105
113106 zval_ptr_dtor (& args [0 ]);
114107 zval_ptr_dtor (& args [1 ]);
115- efree (num1_str );
116- efree (num2_str );
117108
118109 fuzzer_request_shutdown ();
119110
0 commit comments