1 /* Copyright 2021 Google LLC
2 Licensed under the Apache License, Version 2.0 (the "License");
3 you may not use this file except in compliance with the License.
4 You may obtain a copy of the License at
5 http://www.apache.org/licenses/LICENSE-2.0
6 Unless required by applicable law or agreed to in writing, software
7 distributed under the License is distributed on an "AS IS" BASIS,
8 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9 See the License for the specific language governing permissions and
10 limitations under the License.
11 */
12
13 #include <stdint.h>
14 #include <string.h>
15 #include <stdlib.h>
16 #include <string_expressions.h>
17
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)18 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size){
19 if(size<4) {
20 return 0;
21 }
22 for (int i=0; i<size; i++) {
23 if(data[i]==0) {
24 return 0;
25 }
26 }
27 char *new_str = (char *)malloc(size+1);
28 if (new_str == NULL){
29 return 0;
30 }
31 memcpy(new_str, data, size);
32 new_str[size] = '\0';
33 int len = strlen(new_str);
34
35 StringParseResult res = ParseStringExpression(new_str, 0, len);
36
37 FreeStringExpression(res.result);
38 free(new_str);
39 return 0;
40 }
41