Bläddra i källkod

fuzzing: Fuzz different print methods

This is achieved by encoding the type of function used in the first two
bytes.

First byte:
b: buffered

Second byte:
f: formatted
Max Bruckner 8 år sedan
förälder
incheckning
c5a09a32a9

+ 25 - 3
fuzzing/afl.c

@@ -101,12 +101,12 @@ int main(int argc, char** argv)
     filename = argv[1];
 
     json = read_file(filename);
-    if (json == NULL)
+    if ((json == NULL) || (json[0] == '\0') || (json[1] == '\0'))
     {
         status = EXIT_FAILURE;
         goto cleanup;
     }
-    item = cJSON_Parse(json);
+    item = cJSON_Parse(json + 2);
     if (item == NULL)
     {
         goto cleanup;
@@ -114,7 +114,29 @@ int main(int argc, char** argv)
 
     if ((argc == 3) && (strncmp(argv[2], "yes", 3) == 0))
     {
-        printed_json = cJSON_Print(item);
+        int do_format = 0;
+        if (json[1] == 'f')
+        {
+            do_format = 1;
+        }
+
+        if (json[0] == 'b')
+        {
+            /* buffered printing */
+            printed_json = cJSON_PrintBuffered(item, 1, do_format);
+        }
+        else
+        {
+            /* unbuffered printing */
+            if (do_format)
+            {
+                printed_json = cJSON_Print(item);
+            }
+            else
+            {
+                printed_json = cJSON_PrintUnformatted(item);
+            }
+        }
         if (printed_json == NULL)
         {
             status = EXIT_FAILURE;

+ 1 - 1
fuzzing/inputs/test1

@@ -1,4 +1,4 @@
-{
+bf{
     "glossary": {
         "title": "example glossary",
 		"GlossDiv": {

+ 1 - 1
fuzzing/inputs/test10

@@ -1 +1 @@
-["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
+bf["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

+ 1 - 1
fuzzing/inputs/test11

@@ -1,4 +1,4 @@
-{
+bf{
 "name": "Jack (\"Bee\") Nimble", 
 "format": {"type":       "rect", 
 "width":      1920, 

+ 1 - 1
fuzzing/inputs/test2

@@ -1,4 +1,4 @@
-{"menu": {
+bf{"menu": {
   "id": "file",
   "value": "File",
   "popup": {

+ 2 - 2
fuzzing/inputs/test3

@@ -1,4 +1,4 @@
-{"widget": {
+bf{"widget": {
     "debug": "on",
     "window": {
         "title": "Sample Konfabulator Widget",
@@ -23,4 +23,4 @@
         "alignment": "center",
         "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
     }
-}}    
+}}    

+ 26 - 0
fuzzing/inputs/test3.bu

@@ -0,0 +1,26 @@
+bu{"widget": {
+    "debug": "on",
+    "window": {
+        "title": "Sample Konfabulator Widget",
+        "name": "main_window",
+        "width": 500,
+        "height": 500
+    },
+    "image": { 
+        "src": "Images/Sun.png",
+        "name": "sun1",
+        "hOffset": 250,
+        "vOffset": 250,
+        "alignment": "center"
+    },
+    "text": {
+        "data": "Click Here",
+        "size": 36,
+        "style": "bold",
+        "name": "text1",
+        "hOffset": 250,
+        "vOffset": 100,
+        "alignment": "center",
+        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
+    }
+}}    

+ 26 - 0
fuzzing/inputs/test3.uf

@@ -0,0 +1,26 @@
+uf{"widget": {
+    "debug": "on",
+    "window": {
+        "title": "Sample Konfabulator Widget",
+        "name": "main_window",
+        "width": 500,
+        "height": 500
+    },
+    "image": { 
+        "src": "Images/Sun.png",
+        "name": "sun1",
+        "hOffset": 250,
+        "vOffset": 250,
+        "alignment": "center"
+    },
+    "text": {
+        "data": "Click Here",
+        "size": 36,
+        "style": "bold",
+        "name": "text1",
+        "hOffset": 250,
+        "vOffset": 100,
+        "alignment": "center",
+        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
+    }
+}}    

+ 26 - 0
fuzzing/inputs/test3.uu

@@ -0,0 +1,26 @@
+uu{"widget": {
+    "debug": "on",
+    "window": {
+        "title": "Sample Konfabulator Widget",
+        "name": "main_window",
+        "width": 500,
+        "height": 500
+    },
+    "image": { 
+        "src": "Images/Sun.png",
+        "name": "sun1",
+        "hOffset": 250,
+        "vOffset": 250,
+        "alignment": "center"
+    },
+    "text": {
+        "data": "Click Here",
+        "size": 36,
+        "style": "bold",
+        "name": "text1",
+        "hOffset": 250,
+        "vOffset": 100,
+        "alignment": "center",
+        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
+    }
+}}    

+ 2 - 2
fuzzing/inputs/test4

@@ -1,4 +1,4 @@
-{"web-app": {
+bf{"web-app": {
   "servlet": [   
     {
       "servlet-name": "cofaxCDS",
@@ -85,4 +85,4 @@
  
   "taglib": {
     "taglib-uri": "cofax.tld",
-    "taglib-location": "/WEB-INF/tlds/cofax.tld"}}}
+    "taglib-location": "/WEB-INF/tlds/cofax.tld"}}}

+ 1 - 1
fuzzing/inputs/test5

@@ -1,4 +1,4 @@
-{"menu": {
+bf{"menu": {
     "header": "SVG Viewer",
     "items": [
         {"id": "Open"},

+ 2 - 2
fuzzing/inputs/test6

@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+bf<!DOCTYPE html>
     <html>
     <head>
       <meta name="viewport" content="width=device-width, initial-scale=1">
@@ -13,4 +13,4 @@
         <p>Application Error</p>
       </iframe>
     </body>
-    </html>
+    </html>

+ 1 - 1
fuzzing/inputs/test7

@@ -1,4 +1,4 @@
-[
+bf[
 	 {
 	 "precision": "zip",
 	 "Latitude":  37.7668,

+ 1 - 1
fuzzing/inputs/test8

@@ -1,4 +1,4 @@
-{
+bf{
 		"Image": {
 			"Width":  800,
 			"Height": 600,

+ 1 - 1
fuzzing/inputs/test9

@@ -1,4 +1,4 @@
-[
+bf[
     [0, -1, 0],
     [1, 0, 0],
     [0, 0, 1]