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