[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 5/8] tools/insn-fuzz: Use getopt() for parsing the command line
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/fuzz/x86_instruction_emulator/afl-harness.c | 40 +++++++++++++++++++---- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/tools/fuzz/x86_instruction_emulator/afl-harness.c b/tools/fuzz/x86_instruction_emulator/afl-harness.c index 16edbd6..102566c 100644 --- a/tools/fuzz/x86_instruction_emulator/afl-harness.c +++ b/tools/fuzz/x86_instruction_emulator/afl-harness.c @@ -3,6 +3,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <getopt.h> extern int LLVMFuzzerTestOneInput(const uint8_t *data_p, size_t size); extern unsigned int fuzz_minimal_input_size(void); @@ -17,16 +18,43 @@ int main(int argc, char **argv) setbuf(stdout, NULL); - if ( argc != 2 ) + while ( 1 ) { - printf("Expecting only one argument\n"); - exit(-1); + enum { + OPT_MIN_SIZE, + }; + static const struct option lopts[] = { + { "min-input-size", no_argument, NULL, OPT_MIN_SIZE }, + { 0, 0, 0, 0 } + }; + int c = getopt_long_only(argc, argv, "", lopts, NULL); + + if ( c == -1 ) + break; + + switch ( c ) + { + case OPT_MIN_SIZE: + printf("%u\n", fuzz_minimal_input_size()); + exit(0); + break; + + case '?': + printf("Usage: %s $FILE | [--min-input-size]\n", argv[0]); + exit(-1); + break; + + default: + printf("Bad getopt return %d (%c)\n", c, c); + exit(-1); + break; + } } - if ( !strcmp(argv[1], "--min-input-size") ) + if ( optind != (argc - 1) ) { - printf("%u\n", fuzz_minimal_input_size()); - exit(0); + printf("Expecting only one argument\n"); + exit(-1); } fp = fopen(argv[1], "rb"); -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |