[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.