Kaynağa Gözat

misc: fuzz: add msg parse fuzzer

this fuzzer targets various parsing routines and is meant to run
in the oss-fuzz infrastructure.
David Korczynski 4 yıl önce
ebeveyn
işleme
1e71168342
1 değiştirilmiş dosya ile 44 ekleme ve 0 silme
  1. 44 0
      misc/fuzz/fuzz_parse_msg.c

+ 44 - 0
misc/fuzz/fuzz_parse_msg.c

@@ -0,0 +1,44 @@
+#include "../parser/sdp/sdp.h"
+#include "../parser/parse_uri.c"
+#include "../parser/parse_hname2.h"
+#include "../parser/contact/parse_contact.h"
+#include "../parser/parse_refer_to.h"
+#include "../parser/parse_ppi_pai.h"
+#include "../parser/parse_privacy.h"
+#include "../parser/parse_diversion.h"
+
+int LLVMFuzzerInitialize(int *argc, char ***argv) {
+    ksr_hname_init_index();
+    return 0;
+}
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    sip_msg_t orig_inv = { };
+    orig_inv.buf = (char*)data;
+    orig_inv.len = size;
+    if (parse_msg(orig_inv.buf, orig_inv.len, &orig_inv) < 0) {
+        goto cleanup;
+    }
+  
+    parse_sdp(&orig_inv);
+
+    parse_headers(&orig_inv, HDR_TO_F, 0);
+
+    parse_contact_header(&orig_inv);
+
+    parse_refer_to_header(&orig_inv);
+
+    parse_to_header(&orig_inv);
+
+    parse_pai_header(&orig_inv);
+    
+    parse_diversion_header(&orig_inv);
+
+    parse_privacy(&orig_inv);
+
+cleanup:
+    free_sip_msg(&orig_inv);
+
+    return 0;
+}