/* * Copyright 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "FuncFuzzerUtils.h" #include <getopt.h> namespace android { namespace vts { static void usage() { fprintf( stdout, "Usage:\n" "\n" "./<fuzzer> <vts flags> -- <libfuzzer flags>\n" "\n" "VTS flags (strictly in form --flag=value):\n" "\n" " vts_target_func \tName of function to be fuzzed.\n" "\n" "libfuzzer flags (strictly in form -flag=value):\n" " Use -help=1 to see libfuzzer flags\n" "Example:\n" "./<fuzzer_name> --vts_target_func=\"foo\" -- -max_len=128 -runs=100\n" "\n"); } static struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"vts_target_function", required_argument, 0, 't'} }; FuncFuzzerParams ExtractFuncFuzzerParams(int argc, char **argv) { FuncFuzzerParams params; int opt = 0; int index = 0; while ((opt = getopt_long_only(argc, argv, "", long_options, &index)) != -1) { switch (opt) { case 'h': usage(); exit(0); case 't': params.target_func_ = optarg; break; default: // Ignore. This option will be handled by libfuzzer. break; } } return params; } } // namespace vts } // namespace android