• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 # Copyright 2016 Google Inc.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #      http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 #
16 ################################################################################
17 */
18 
19 #include <string>
20 
21 #include <augeas.h>
22 
escape_match(const uint8_t * data,size_t size)23 int escape_match(const uint8_t *data, size_t size){
24     augeas *aug = aug_init(NULL, NULL, AUG_NONE);
25     std::string data_string(reinterpret_cast<const char*>(data), size);
26     char *out = NULL;
27     aug_escape_name(aug, data_string.c_str(), &out);
28     if (out != NULL){
29         aug_match(aug, out, NULL);
30     }
31     else{
32         aug_match(aug, data_string.c_str(), NULL);
33     }
34     aug_close(aug);
35     free(out);
36     return 0;
37 }
38 
39 // Entry point for LibFuzzer.
LLVMFuzzerTestOneInput(const uint8_t * Data,size_t Size)40 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size) {
41     escape_match(Data, Size);
42     return 0;
43 }
44