#!/usr/bin/env python3 # Copyright 2020 Google LLC # # 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. # ################################################################################ """Helper script for parsing custom fuzzing options.""" import configparser import sys def parse_options(options_file_path, options_section): """Parses the given file and returns options from the given section.""" parser = configparser.ConfigParser() parser.read(options_file_path) if not parser.has_section(options_section): return None options = parser[options_section] if options_section == 'libfuzzer': options_string = ' '.join( '-%s=%s' % (key, value) for key, value in options.items()) else: # Sanitizer options. options_string = ':'.join( '%s=%s' % (key, value) for key, value in options.items()) return options_string def main(): """Processes the arguments and prints the options in the correct format.""" if len(sys.argv) < 3: sys.stderr.write('Usage: %s \n' % sys.argv[0]) return 1 options = parse_options(sys.argv[1], sys.argv[2]) if options is not None: print(options) return 0 if __name__ == "__main__": sys.exit(main())