# HG changeset patch
# Node ID 3aba6eca5806
# Parent  cb21c7484e4c
diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -61,7 +61,18 @@
 libpurple/dbus-types.h
 libpurple/example/nullclient
 libpurple/data/gconf/purple.schemas$
-libpurple/fuzzers/fuzz_.*
+libpurple/fuzzers/fuzz_base16_decode$
+libpurple/fuzzers/fuzz_html_to_xhtml$
+libpurple/fuzzers/fuzz_jabber_caps$
+libpurple/fuzzers/fuzz_jabber_id_new$
+libpurple/fuzzers/fuzz_markup_is_rtl$
+libpurple/fuzzers/fuzz_markup_linkify$
+libpurple/fuzzers/fuzz_markup_strip_html$
+libpurple/fuzzers/fuzz_mime_decode_field$
+libpurple/fuzzers/fuzz_quotedp_decode$
+libpurple/fuzzers/fuzz_str_to_time$
+libpurple/fuzzers/fuzz_xmlnode$
+libpurple/fuzzers/fuzz-.*.log
 libpurple/marshallers.[ch]
 libpurple/plugins/dbus-example-bindings.c
 libpurple/plugins/perl/common/Makefile.PL$
diff --git a/FUZZING b/FUZZING
--- a/FUZZING
+++ b/FUZZING
@@ -12,7 +12,7 @@
 
 Example:
 ```bash
-$ CC=clang ./configure --enable-fuzzing --disable-cyrus-sasl --disable-gtkui --disable-gstreamer --disable-vv --disable-idn --disable-meanwhile --disable-avahi --disable-libgadu --disable-dbus --disable-libsecret --disable-gnome-keyring --disable-kwallet --disable-plugin
+$ CC=clang ./configure --enable-fuzzing --disable-cyrus-sasl --disable-gtkui --disable-gstreamer --disable-vv --disable-idn --disable-meanwhile --disable-avahi --disable-libgadu --disable-dbus --disable-libsecret --disable-gnome-keyring --disable-kwallet --disable-plugins
 ```
 
 Now that the build system has been configured, you need to build everything,
@@ -21,15 +21,17 @@
 but optional.
 
 ```bash
-$ make -j $(nproc)
+$ make -j $(nproc) check
 ```
 
 Now that the fuzzers are built, you can run them directly. There is also an
 optional `-dict` parameter that can be used to specify a dictionary to be used
-during the process.
+during the process. Also all fuzzers must have a basic corpus to help the
+fuzzer find values and should be located in the fuzzers/corpus/<fuzzer-name>
+directory.
 
 ```bash
-$ ./fuzz_xmlnode -dict=dictionaries/xml.dict
+$ ./fuzz_xmlnode -dict=dictionaries/xml.dict corpus/xmlnode
 ```
 
 # Useful options
@@ -89,18 +91,14 @@
 
 ```C
 #include <glib.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdio.h>
 #include <string.h>
+
 #include <purple.h>
 
-#include "../util.h"
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
 
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
-
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
         gchar *malicious_input = g_new0(gchar, size + 1);
 
         memcpy(malicious_input, data, size);
@@ -114,8 +112,8 @@
 }
 ```
 
-Make sure to include the relevant headers and then run `make`. This will force
-an update of the build system and build everything that needs to be rebuilt. If
-there were no issues, you should now be able to run your new fuzzer from the
-`libpurple/fuzzers` directory.
+Make sure to include the relevant headers and then run `make check`. This will
+force an update of the build system and build everything that needs to be
+rebuilt. If there were no issues, you should now be able to run your new fuzzer
+from the `libpurple/fuzzers` directory.
 
diff --git a/libpurple/fuzzers/Makefile.am b/libpurple/fuzzers/Makefile.am
--- a/libpurple/fuzzers/Makefile.am
+++ b/libpurple/fuzzers/Makefile.am
@@ -1,10 +1,15 @@
 if FUZZ
 check_PROGRAMS=\
+	fuzz_base16_decode \
 	fuzz_html_to_xhtml \
 	fuzz_jabber_caps \
 	fuzz_jabber_id_new \
+	fuzz_markup_is_rtl \
+	fuzz_markup_linkify \
 	fuzz_markup_strip_html \
-	fuzz_mime \
+	fuzz_mime_decode_field \
+	fuzz_quotedp_decode \
+	fuzz_str_to_time \
 	fuzz_xmlnode
 
 common_CFLAGS=\
@@ -20,28 +25,48 @@
 	$(top_builddir)/libpurple/libpurple.la \
 	$(GLIB_LIBS)
 
-fuzz_xmlnode_SOURCES=fuzz_xmlnode.c
-fuzz_xmlnode_LDADD=$(common_LDADD)
-fuzz_xmlnode_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+fuzz_base16_decode_SOURCES=fuzz_base16_decode.c
+fuzz_base16_decode_LDADD=$(common_LDADD)
+fuzz_base16_decode_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
 
-fuzz_jabber_id_new_SOURCES=fuzz_jabber_id_new.c
-fuzz_jabber_id_new_LDADD=$(common_LDADD)
-fuzz_jabber_id_new_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+fuzz_html_to_xhtml_SOURCES=fuzz_html_to_xhtml.c
+fuzz_html_to_xhtml_LDADD=$(common_LDADD)
+fuzz_html_to_xhtml_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
 
 fuzz_jabber_caps_SOURCES=fuzz_jabber_caps.c
 fuzz_jabber_caps_LDADD=$(common_LDADD)
 fuzz_jabber_caps_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
 
-fuzz_mime_SOURCES=fuzz_mime.c
-fuzz_mime_LDADD=$(common_LDADD)
-fuzz_mime_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+fuzz_jabber_id_new_SOURCES=fuzz_jabber_id_new.c
+fuzz_jabber_id_new_LDADD=$(common_LDADD)
+fuzz_jabber_id_new_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
 
-fuzz_html_to_xhtml_SOURCES=fuzz_html_to_xhtml.c
-fuzz_html_to_xhtml_LDADD=$(common_LDADD)
-fuzz_html_to_xhtml_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+fuzz_markup_is_rtl_SOURCES=fuzz_markup_is_rtl.c
+fuzz_markup_is_rtl_LDADD=$(common_LDADD)
+fuzz_markup_is_rtl_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+
+fuzz_markup_linkify_SOURCES=fuzz_markup_linkify.c
+fuzz_markup_linkify_LDADD=$(common_LDADD)
+fuzz_markup_linkify_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
 
 fuzz_markup_strip_html_SOURCES=fuzz_markup_strip_html.c
 fuzz_markup_strip_html_LDADD=$(common_LDADD)
 fuzz_markup_strip_html_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
 
+fuzz_mime_decode_field_SOURCES=fuzz_mime_decode_field.c
+fuzz_mime_decode_field_LDADD=$(common_LDADD)
+fuzz_mime_decode_field_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+
+fuzz_quotedp_decode_SOURCES=fuzz_quotedp_decode.c
+fuzz_quotedp_decode_LDADD=$(common_LDADD)
+fuzz_quotedp_decode_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+
+fuzz_str_to_time_SOURCES=fuzz_str_to_time.c
+fuzz_str_to_time_LDADD=$(common_LDADD)
+fuzz_str_to_time_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+
+fuzz_xmlnode_SOURCES=fuzz_xmlnode.c
+fuzz_xmlnode_LDADD=$(common_LDADD)
+fuzz_xmlnode_CFLAGS=-fsanitize=fuzzer,address $(common_CFLAGS)
+
 endif
diff --git a/libpurple/fuzzers/corpus/base16_decode/0049243b089ccbf14c5552e544ef92255750c540 b/libpurple/fuzzers/corpus/base16_decode/0049243b089ccbf14c5552e544ef92255750c540
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/0049243b089ccbf14c5552e544ef92255750c540
@@ -0,0 +1,1 @@
+21646c726f77202c56800
diff --git a/libpurple/fuzzers/corpus/base16_decode/0199c5a6a27e24e0c3eebf21051f092f5d70ab75 b/libpurple/fuzzers/corpus/base16_decode/0199c5a6a27e24e0c3eebf21051f092f5d70ab75
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/0199c5a6a27e24e0c3eebf21051f092f5d70ab75
@@ -0,0 +1,1 @@
+226f7721UTF2cõ6800
diff --git a/libpurple/fuzzers/corpus/base16_decode/03a828826288b1774babfcdb58aeececa538420a b/libpurple/fuzzers/corpus/base16_decode/03a828826288b1774babfcdb58aeececa538420a
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/03a828826288b1774babfcdb58aeececa538420a
@@ -0,0 +1,1 @@
+226f77202c6f6c6656800
diff --git a/libpurple/fuzzers/corpus/base16_decode/42d2a6ad49f93ab4b987b1a9e738425aacb8d2af b/libpurple/fuzzers/corpus/base16_decode/42d2a6ad49f93ab4b987b1a9e738425aacb8d2af
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/42d2a6ad49f93ab4b987b1a9e738425aacb8d2af
@@ -0,0 +1,1 @@
+227
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/base16_decode/4a5b94151967c0bb1e6ca8c9a825dafc1dbeecd2 b/libpurple/fuzzers/corpus/base16_decode/4a5b94151967c0bb1e6ca8c9a825dafc1dbeecd2
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/4a5b94151967c0bb1e6ca8c9a825dafc1dbeecd2
@@ -0,0 +1,1 @@
+2226
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/base16_decode/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/libpurple/fuzzers/corpus/base16_decode/5ba93c9db0cff93f52b521d7420e43f6eda2784f
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/base16_decode/bc33ea4e26e5e1af1408321416956113a4658763 b/libpurple/fuzzers/corpus/base16_decode/bc33ea4e26e5e1af1408321416956113a4658763
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/bc33ea4e26e5e1af1408321416956113a4658763
@@ -0,0 +1,1 @@
+27
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/base16_decode/c7e350bc9a4819db7aa7bb8165ad15ea05522053 b/libpurple/fuzzers/corpus/base16_decode/c7e350bc9a4819db7aa7bb8165ad15ea05522053
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/c7e350bc9a4819db7aa7bb8165ad15ea05522053
@@ -0,0 +1,1 @@
+226f@720653400
diff --git a/libpurple/fuzzers/corpus/base16_decode/da4b9237bacccdf19c0760cab7aec4a8359010b0 b/libpurple/fuzzers/corpus/base16_decode/da4b9237bacccdf19c0760cab7aec4a8359010b0
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/da4b9237bacccdf19c0760cab7aec4a8359010b0
@@ -0,0 +1,1 @@
+2
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/base16_decode/e56702a1f90088c8591577a20874d6c647992887 b/libpurple/fuzzers/corpus/base16_decode/e56702a1f90088c8591577a20874d6c647992887
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/base16_decode/e56702a1f90088c8591577a20874d6c647992887
@@ -0,0 +1,1 @@
+21646c726f77202c6f6c6c656800
diff --git a/libpurple/fuzzers/corpus/html_to_xhtml/00046a179067e687c5e8e7cff71e54dd6b56ef9f b/libpurple/fuzzers/corpus/html_to_xhtml/00046a179067e687c5e8e7cff71e54dd6b56ef9f
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/html_to_xhtml/00046a179067e687c5e8e7cff71e54dd6b56ef9f
@@ -0,0 +1,1 @@
+<a>
diff --git a/libpurple/fuzzers/corpus/html_to_xhtml/12ab60dd3d75498fb9488f632ab7c5a20ea56523 b/libpurple/fuzzers/corpus/html_to_xhtml/12ab60dd3d75498fb9488f632ab7c5a20ea56523
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/html_to_xhtml/12ab60dd3d75498fb9488f632ab7c5a20ea56523
@@ -0,0 +1,1 @@
+<a href=""></a>
diff --git a/libpurple/fuzzers/corpus/html_to_xhtml/543eddb89882f75b1f21065bbf25a1366e62a895 b/libpurple/fuzzers/corpus/html_to_xhtml/543eddb89882f75b1f21065bbf25a1366e62a895
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/html_to_xhtml/543eddb89882f75b1f21065bbf25a1366e62a895
@@ -0,0 +1,1 @@
+<FONT>x</FONT>
diff --git a/libpurple/fuzzers/corpus/html_to_xhtml/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/libpurple/fuzzers/corpus/html_to_xhtml/5ba93c9db0cff93f52b521d7420e43f6eda2784f
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/html_to_xhtml/76249b4aa1b13012c8fe0ed11999dbe3871058cb b/libpurple/fuzzers/corpus/html_to_xhtml/76249b4aa1b13012c8fe0ed11999dbe3871058cb
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/html_to_xhtml/76249b4aa1b13012c8fe0ed11999dbe3871058cb
@@ -0,0 +1,1 @@
+<a
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/html_to_xhtml/86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 b/libpurple/fuzzers/corpus/html_to_xhtml/86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/html_to_xhtml/86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
@@ -0,0 +1,1 @@
+a
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_caps/07b7255eacbc81c051445ebe4f8c74fc8892dd3e b/libpurple/fuzzers/corpus/jabber_caps/07b7255eacbc81c051445ebe4f8c74fc8892dd3e
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_caps/07b7255eacbc81c051445ebe4f8c74fc8892dd3e
@@ -0,0 +1,1 @@
+ñ
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_caps/2348c3e834b089bf4b1bea01fb0157c15d62c9d9 b/libpurple/fuzzers/corpus/jabber_caps/2348c3e834b089bf4b1bea01fb0157c15d62c9d9
new file mode 100644
index 0000000000000000000000000000000000000000..ab99b16c6905f440b18c2982e54a113a0446d22e
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/jabber_caps/27d5482eebd075de44389774fce28c69f45c8a75 b/libpurple/fuzzers/corpus/jabber_caps/27d5482eebd075de44389774fce28c69f45c8a75
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_caps/27d5482eebd075de44389774fce28c69f45c8a75
@@ -0,0 +1,1 @@
+h
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_caps/4104ea0ac9b715fda1e09d509b9af45537e0b180 b/libpurple/fuzzers/corpus/jabber_caps/4104ea0ac9b715fda1e09d509b9af45537e0b180
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_caps/4104ea0ac9b715fda1e09d509b9af45537e0b180
@@ -0,0 +1,1 @@
+<query xmlns='http://jabber.org/protocol/disco#info' node='http://tkabber.jabber.ru/#GNjxthSckUNvAIoCCJFttjl6VL8='><identity category='client' type='pc' name='Tkabber'/><x xmlns='jabber:x:data' type='result'><field var='FORM_TYPE' type='hidden'><value>urn:xmpp:dataforms:softwareinfo</value></field><field var='software'><value>Tkabber</value></field><field var='software_version'><value> ( 8.5.5 )</value></field><field var='os'><value>ATmega640-16AU</value></field><field var='os_version'><value/></field></x><feature var='games:board'/><feature var='google:mail:notify'/><feature var='http://jabber.org/protocol/activity'/><feature var='http://jabber.org/protocol/bytestreams'/><feature var='http://jabber.org/protocol/chatstates'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/><feature var='http://jabber.org/protocol/feature-neg'/><feature var='http://jabber.org/protocol/geoloc'/><feature var='http://jabber.org/protocol/ibb'/><feature var='http://jabber.org/protocol/iqibb'/><feature var='http://jabber.org/protocol/mood'/><feature var='http://jabber.org/protocol/muc'/><feature var='http://jabber.org/protocol/mute#ancestor'/><feature var='http://jabber.org/protocol/mute#editor'/><feature var='http://jabber.org/protocol/rosterx'/><feature var='http://jabber.org/protocol/si'/><feature var='http://jabber.org/protocol/si/profile/file-transfer'/><feature var='http://jabber.org/protocol/tune'/><feature var='jabber:iq:avatar'/><feature var='jabber:iq:browse'/><feature var='jabber:iq:dtcp'/><feature var='jabber:iq:filexfer'/><feature var='jabber:iq:ibb'/><feature var='jabber:iq:inband'/><feature var='jabber:iq:jidlink'/><feature var='jabber:iq:last'/><feature var='jabber:iq:oob'/><feature var='jabber:iq:privacy'/><feature var='jabber:iq:time'/><feature var='jabber:iq:version'/><feature var='jabber:x:data'/><feature var='jabber:x:event'/><feature var='jabber:x:oob'/><feature var='urn:xmpp:ping'/><feature var='urn:xmpp:receipts'/><feature var='urn:xmpp:time'/></query>
diff --git a/libpurple/fuzzers/corpus/jabber_caps/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/libpurple/fuzzers/corpus/jabber_caps/5ba93c9db0cff93f52b521d7420e43f6eda2784f
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/jabber_caps/68d3808459369d58358bc6535d0eb178ae2b7b56 b/libpurple/fuzzers/corpus/jabber_caps/68d3808459369d58358bc6535d0eb178ae2b7b56
new file mode 100644
index 0000000000000000000000000000000000000000..cc6a519e7d2560b9bd3eecf85526c0f25a27a2f2
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/jabber_caps/969a02028c3d58deec92dea95c94341c269625ac b/libpurple/fuzzers/corpus/jabber_caps/969a02028c3d58deec92dea95c94341c269625ac
new file mode 100644
index 0000000000000000000000000000000000000000..ff1744ad50d94490d5ab17f0910dcd4a861dcc47
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/jabber_caps/a42c6cf1de3abfdea9b95f34687cbbe92b9a7383 b/libpurple/fuzzers/corpus/jabber_caps/a42c6cf1de3abfdea9b95f34687cbbe92b9a7383
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_caps/a42c6cf1de3abfdea9b95f34687cbbe92b9a7383
@@ -0,0 +1,1 @@
+
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_caps/c78ebd3c85a39a596d9f5cfd2b8d240bc1b9c125 b/libpurple/fuzzers/corpus/jabber_caps/c78ebd3c85a39a596d9f5cfd2b8d240bc1b9c125
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_caps/c78ebd3c85a39a596d9f5cfd2b8d240bc1b9c125
@@ -0,0 +1,1 @@
+€
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_caps/dc9e44dc2a9a9048f77095c80cecebb18bac9898 b/libpurple/fuzzers/corpus/jabber_caps/dc9e44dc2a9a9048f77095c80cecebb18bac9898
new file mode 100644
index 0000000000000000000000000000000000000000..015fdd0761440e705501675d77bc37f02005d111
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/1b6453892473a467d07372d45eb05abc2031647a b/libpurple/fuzzers/corpus/jabber_id_new/1b6453892473a467d07372d45eb05abc2031647a
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/1b6453892473a467d07372d45eb05abc2031647a
@@ -0,0 +1,1 @@
+4
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/3379a2877f57f05abd0f8dd7d102e1b1387231eb b/libpurple/fuzzers/corpus/jabber_id_new/3379a2877f57f05abd0f8dd7d102e1b1387231eb
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/3379a2877f57f05abd0f8dd7d102e1b1387231eb
@@ -0,0 +1,1 @@
+/]im@p4m
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/5a20cf3f388f7ddc4ee21abebd5b8d88f1f9642e b/libpurple/fuzzers/corpus/jabber_id_new/5a20cf3f388f7ddc4ee21abebd5b8d88f1f9642e
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/5a20cf3f388f7ddc4ee21abebd5b8d88f1f9642e
@@ -0,0 +1,1 @@
+/p4m
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/libpurple/fuzzers/corpus/jabber_id_new/5ba93c9db0cff93f52b521d7420e43f6eda2784f
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/5f16050d40529b30888c6557f11b0b5cc70e20a8 b/libpurple/fuzzers/corpus/jabber_id_new/5f16050d40529b30888c6557f11b0b5cc70e20a8
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/5f16050d40529b30888c6557f11b0b5cc70e20a8
@@ -0,0 +1,1 @@
+/]im@p4im
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/98fbc42faedc02492397cb5962ea3a3ffc0a9243 b/libpurple/fuzzers/corpus/jabber_id_new/98fbc42faedc02492397cb5962ea3a3ffc0a9243
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/98fbc42faedc02492397cb5962ea3a3ffc0a9243
@@ -0,0 +1,1 @@
+44
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/998ca698ffc0ae6abfaaa47d86646c9199c39993 b/libpurple/fuzzers/corpus/jabber_id_new/998ca698ffc0ae6abfaaa47d86646c9199c39993
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/998ca698ffc0ae6abfaaa47d86646c9199c39993
@@ -0,0 +1,1 @@
+grim@pidgin.im/pidgin
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/a03f5777fd0275f978dd42934e2c536208a07ad7 b/libpurple/fuzzers/corpus/jabber_id_new/a03f5777fd0275f978dd42934e2c536208a07ad7
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/a03f5777fd0275f978dd42934e2c536208a07ad7
@@ -0,0 +1,1 @@
+/p4
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/a0cfffe2b778d667ba2fdd067510c4b7079c8314 b/libpurple/fuzzers/corpus/jabber_id_new/a0cfffe2b778d667ba2fdd067510c4b7079c8314
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/a0cfffe2b778d667ba2fdd067510c4b7079c8314
@@ -0,0 +1,1 @@
+grim@pidgin.im
diff --git a/libpurple/fuzzers/corpus/jabber_id_new/eb415e5f9af9eea93f11c492aa1c1bb8cea3fb95 b/libpurple/fuzzers/corpus/jabber_id_new/eb415e5f9af9eea93f11c492aa1c1bb8cea3fb95
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/jabber_id_new/eb415e5f9af9eea93f11c492aa1c1bb8cea3fb95
@@ -0,0 +1,1 @@
+/[p4m
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/061286fe5112f79cae0ddbfced7a8b10c229c060 b/libpurple/fuzzers/corpus/markup_is_rtl/061286fe5112f79cae0ddbfced7a8b10c229c060
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/061286fe5112f79cae0ddbfced7a8b10c229c060
@@ -0,0 +1,1 @@
+< dir="RTL"></span>
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/1034e287ca0bdafb1b182a3eccdd8e5aacb8f7ce b/libpurple/fuzzers/corpus/markup_is_rtl/1034e287ca0bdafb1b182a3eccdd8e5aacb8f7ce
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/1034e287ca0bdafb1b182a3eccdd8e5aacb8f7ce
@@ -0,0 +1,1 @@
+<span style="direction: RTL;"></span>
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/404b38fdcfbb5c9670722ca7035bd59ef231263c b/libpurple/fuzzers/corpus/markup_is_rtl/404b38fdcfbb5c9670722ca7035bd59ef231263c
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/404b38fdcfbb5c9670722ca7035bd59ef231263c
@@ -0,0 +1,1 @@
+< dir="R=
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/5aa65bb4681f7469a9f63975dc80cf88369369b3 b/libpurple/fuzzers/corpus/markup_is_rtl/5aa65bb4681f7469a9f63975dc80cf88369369b3
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/5aa65bb4681f7469a9f63975dc80cf88369369b3
@@ -0,0 +1,1 @@
+< 
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/85f56dfb0669e023912daf69878e84a35afa583d b/libpurple/fuzzers/corpus/markup_is_rtl/85f56dfb0669e023912daf69878e84a35afa583d
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/85f56dfb0669e023912daf69878e84a35afa583d
@@ -0,0 +1,1 @@
+<span dir="RTL"></span>
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/a4ac408fb9d6def070ad3a76312ca092863048e5 b/libpurple/fuzzers/corpus/markup_is_rtl/a4ac408fb9d6def070ad3a76312ca092863048e5
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/a4ac408fb9d6def070ad3a76312ca092863048e5
@@ -0,0 +1,1 @@
+Ý
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/b858cb282617fb0956d960215c8e84d1ccf909c6 b/libpurple/fuzzers/corpus/markup_is_rtl/b858cb282617fb0956d960215c8e84d1ccf909c6
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/b858cb282617fb0956d960215c8e84d1ccf909c6
@@ -0,0 +1,1 @@
+ 
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/bbafc608a1e8a2ac235bb0ed59f767ae78c3671b b/libpurple/fuzzers/corpus/markup_is_rtl/bbafc608a1e8a2ac235bb0ed59f767ae78c3671b
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/bbafc608a1e8a2ac235bb0ed59f767ae78c3671b
@@ -0,0 +1,1 @@
+< =
diff --git a/libpurple/fuzzers/corpus/markup_is_rtl/d2a2fb1be76296efb74f64c77874865f4e4648ba b/libpurple/fuzzers/corpus/markup_is_rtl/d2a2fb1be76296efb74f64c77874865f4e4648ba
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_is_rtl/d2a2fb1be76296efb74f64c77874865f4e4648ba
@@ -0,0 +1,1 @@
+< diR=
diff --git a/libpurple/fuzzers/corpus/markup_linkify/013f80f362c52dcf9578786de6dfcc9d1ba3325f b/libpurple/fuzzers/corpus/markup_linkify/013f80f362c52dcf9578786de6dfcc9d1ba3325f
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/013f80f362c52dcf9578786de6dfcc9d1ba3325f
@@ -0,0 +1,1 @@
+www.e.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/07dbc2845a7dce5b7ae1877567d13a1271da613b b/libpurple/fuzzers/corpus/markup_linkify/07dbc2845a7dce5b7ae1877567d13a1271da613b
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/07dbc2845a7dce5b7ae1877567d13a1271da613b
@@ -0,0 +1,1 @@
+wwe)2m
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/18c42203590f36ef6f08a9585fa415d7b0240b02 b/libpurple/fuzzers/corpus/markup_linkify/18c42203590f36ef6f08a9585fa415d7b0240b02
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/18c42203590f36ef6f08a9585fa415d7b0240b02
@@ -0,0 +1,1 @@
+0
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/27d5396bf5b0c26da61fe1846419480311f041e9 b/libpurple/fuzzers/corpus/markup_linkify/27d5396bf5b0c26da61fe1846419480311f041e9
new file mode 100644
index 0000000000000000000000000000000000000000..9fb67351553fe255e64144b9ec90d5ff5434c048
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/markup_linkify/27d5482eebd075de44389774fce28c69f45c8a75 b/libpurple/fuzzers/corpus/markup_linkify/27d5482eebd075de44389774fce28c69f45c8a75
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/27d5482eebd075de44389774fce28c69f45c8a75
@@ -0,0 +1,1 @@
+h
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/2a64c4b104cc6ea9e84745969305bd60aaf2574d b/libpurple/fuzzers/corpus/markup_linkify/2a64c4b104cc6ea9e84745969305bd60aaf2574d
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/2a64c4b104cc6ea9e84745969305bd60aaf2574d
@@ -0,0 +1,1 @@
+www.exam
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/2bff9dc8ca7efdb8877f1fc3910aeaa62631c5d4 b/libpurple/fuzzers/corpus/markup_linkify/2bff9dc8ca7efdb8877f1fc3910aeaa62631c5d4
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/2bff9dc8ca7efdb8877f1fc3910aeaa62631c5d4
@@ -0,0 +1,1 @@
+wwx.xap
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/3c73d94bac8f53b485708b1eeca330f2ceaadf52 b/libpurple/fuzzers/corpus/markup_linkify/3c73d94bac8f53b485708b1eeca330f2ceaadf52
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/3c73d94bac8f53b485708b1eeca330f2ceaadf52
@@ -0,0 +1,1 @@
+w,
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/3f6fb15a0abf982bd84a948db71394e520726f40 b/libpurple/fuzzers/corpus/markup_linkify/3f6fb15a0abf982bd84a948db71394e520726f40
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/3f6fb15a0abf982bd84a948db71394e520726f40
@@ -0,0 +1,1 @@
+www.exm
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/560d0391c13b0a2dc03d16988919de94ca761f08 b/libpurple/fuzzers/corpus/markup_linkify/560d0391c13b0a2dc03d16988919de94ca761f08
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/560d0391c13b0a2dc03d16988919de94ca761f08
@@ -0,0 +1,1 @@
+www
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/libpurple/fuzzers/corpus/markup_linkify/5ba93c9db0cff93f52b521d7420e43f6eda2784f
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/markup_linkify/5c10b5b2cd673a0616d529aa5234b12ee7153808 b/libpurple/fuzzers/corpus/markup_linkify/5c10b5b2cd673a0616d529aa5234b12ee7153808
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/5c10b5b2cd673a0616d529aa5234b12ee7153808
@@ -0,0 +1,1 @@
+,
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/619fc2721adab6801154c19475575fdeb7389ae7 b/libpurple/fuzzers/corpus/markup_linkify/619fc2721adab6801154c19475575fdeb7389ae7
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/619fc2721adab6801154c19475575fdeb7389ae7
@@ -0,0 +1,1 @@
+wwx.xaplm
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/64fa8b9373b24084be48fae19ff175c4f7b14f99 b/libpurple/fuzzers/corpus/markup_linkify/64fa8b9373b24084be48fae19ff175c4f7b14f99
new file mode 100644
index 0000000000000000000000000000000000000000..b4143cd1676a13722764d3eb7f788382bfbb0522
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/markup_linkify/779d58fc22801f8a5597184eb52542cf9f3ffd73 b/libpurple/fuzzers/corpus/markup_linkify/779d58fc22801f8a5597184eb52542cf9f3ffd73
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/779d58fc22801f8a5597184eb52542cf9f3ffd73
@@ -0,0 +1,1 @@
+www.example,om
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/80a7141f8ad10ae78d7a295daea6299a7d38f1c5 b/libpurple/fuzzers/corpus/markup_linkify/80a7141f8ad10ae78d7a295daea6299a7d38f1c5
new file mode 100644
index 0000000000000000000000000000000000000000..77b8f1fbc65200e32cd495e47587c19b3479d39e
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/markup_linkify/84a02f54db047cb6283e8e616507d05b09ff4d59 b/libpurple/fuzzers/corpus/markup_linkify/84a02f54db047cb6283e8e616507d05b09ff4d59
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/84a02f54db047cb6283e8e616507d05b09ff4d59
@@ -0,0 +1,1 @@
+w
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/8519ccd071836fe21ff957b209675cea9c9d579b b/libpurple/fuzzers/corpus/markup_linkify/8519ccd071836fe21ff957b209675cea9c9d579b
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/8519ccd071836fe21ff957b209675cea9c9d579b
@@ -0,0 +1,1 @@
+.ex°ple&cym
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/896d82cb378519fecbce40e66134906f7e0f820c b/libpurple/fuzzers/corpus/markup_linkify/896d82cb378519fecbce40e66134906f7e0f820c
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/896d82cb378519fecbce40e66134906f7e0f820c
@@ -0,0 +1,1 @@
+ftp.mple.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/8ad6282663d115592c05de6c15c3ab7b5fc74d84 b/libpurple/fuzzers/corpus/markup_linkify/8ad6282663d115592c05de6c15c3ab7b5fc74d84
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/8ad6282663d115592c05de6c15c3ab7b5fc74d84
@@ -0,0 +1,1 @@
+wwx.p
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/8f9a4284735d6c161db3d7bd3f64c61e473cd9fd b/libpurple/fuzzers/corpus/markup_linkify/8f9a4284735d6c161db3d7bd3f64c61e473cd9fd
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/8f9a4284735d6c161db3d7bd3f64c61e473cd9fd
@@ -0,0 +1,1 @@
+w
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/9d69f8f8c7f5ec4ffa48ed9db1c22223c7377d84 b/libpurple/fuzzers/corpus/markup_linkify/9d69f8f8c7f5ec4ffa48ed9db1c22223c7377d84
new file mode 100644
index 0000000000000000000000000000000000000000..8a284d6275d12ee8fccef9c9c03ce0894584d0c1
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/markup_linkify/a98984e97ad01df6c0e4c6efba9078a790d80b01 b/libpurple/fuzzers/corpus/markup_linkify/a98984e97ad01df6c0e4c6efba9078a790d80b01
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/a98984e97ad01df6c0e4c6efba9078a790d80b01
@@ -0,0 +1,1 @@
+wwwemc2m
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/aff024fe4ab0fece4091de044c58c9ae4233383a b/libpurple/fuzzers/corpus/markup_linkify/aff024fe4ab0fece4091de044c58c9ae4233383a
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/aff024fe4ab0fece4091de044c58c9ae4233383a
@@ -0,0 +1,1 @@
+w
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/anchor b/libpurple/fuzzers/corpus/markup_linkify/anchor
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/anchor
@@ -0,0 +1,1 @@
+<a href=http://example.com>example</a>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/bare_ftp b/libpurple/fuzzers/corpus/markup_linkify/bare_ftp
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/bare_ftp
@@ -0,0 +1,1 @@
+ftp.example.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/bare_www b/libpurple/fuzzers/corpus/markup_linkify/bare_www
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/bare_www
@@ -0,0 +1,1 @@
+www.example.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/bf8b4530d8d246dd74ac53a13471bba17941dff7 b/libpurple/fuzzers/corpus/markup_linkify/bf8b4530d8d246dd74ac53a13471bba17941dff7
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/bf8b4530d8d246dd74ac53a13471bba17941dff7
@@ -0,0 +1,1 @@
+
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/c50267b906a652f2142cfab006e215c9f6fdc8a0 b/libpurple/fuzzers/corpus/markup_linkify/c50267b906a652f2142cfab006e215c9f6fdc8a0
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/c50267b906a652f2142cfab006e215c9f6fdc8a0
@@ -0,0 +1,1 @@
+www
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/cb02a6b3f80c558cab15ca88fc634210787f9a61 b/libpurple/fuzzers/corpus/markup_linkify/cb02a6b3f80c558cab15ca88fc634210787f9a61
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/cb02a6b3f80c558cab15ca88fc634210787f9a61
@@ -0,0 +1,1 @@
+ftp.exaple.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/cdcfdbb7d2ff76e0bdbcf848a496fc6b444c3b66 b/libpurple/fuzzers/corpus/markup_linkify/cdcfdbb7d2ff76e0bdbcf848a496fc6b444c3b66
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/cdcfdbb7d2ff76e0bdbcf848a496fc6b444c3b66
@@ -0,0 +1,1 @@
+08#
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/d4180488cdf44be7bea53d19e71e1f2a8b2c1719 b/libpurple/fuzzers/corpus/markup_linkify/d4180488cdf44be7bea53d19e71e1f2a8b2c1719
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/d4180488cdf44be7bea53d19e71e1f2a8b2c1719
@@ -0,0 +1,1 @@
+w(ww
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/da42d3a8a7748d3f23ec0fd13e2129059aa82123 b/libpurple/fuzzers/corpus/markup_linkify/da42d3a8a7748d3f23ec0fd13e2129059aa82123
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/da42d3a8a7748d3f23ec0fd13e2129059aa82123
@@ -0,0 +1,1 @@
+8h
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/db7007c3dbe20362e93a812f25f0ab5c78c4b826 b/libpurple/fuzzers/corpus/markup_linkify/db7007c3dbe20362e93a812f25f0ab5c78c4b826
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/db7007c3dbe20362e93a812f25f0ab5c78c4b826
@@ -0,0 +1,1 @@
+w8h
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/dec7f56f6d40734ff9087297fadf5bb6f2a401f5 b/libpurple/fuzzers/corpus/markup_linkify/dec7f56f6d40734ff9087297fadf5bb6f2a401f5
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/dec7f56f6d40734ff9087297fadf5bb6f2a401f5
@@ -0,0 +1,1 @@
+w'w
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/eb0e6c06c74ac41b57144590f906e4591927af05 b/libpurple/fuzzers/corpus/markup_linkify/eb0e6c06c74ac41b57144590f906e4591927af05
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/eb0e6c06c74ac41b57144590f906e4591927af05
@@ -0,0 +1,1 @@
+we)2m
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/ebf7298afc9d394eec4ce87d7238bec975b2c980 b/libpurple/fuzzers/corpus/markup_linkify/ebf7298afc9d394eec4ce87d7238bec975b2c980
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/ebf7298afc9d394eec4ce87d7238bec975b2c980
@@ -0,0 +1,1 @@
+ww
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/f8552b7df4e0d4349013f2d534b42befa8b53b83 b/libpurple/fuzzers/corpus/markup_linkify/f8552b7df4e0d4349013f2d534b42befa8b53b83
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/f8552b7df4e0d4349013f2d534b42befa8b53b83
@@ -0,0 +1,1 @@
+w(www
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/file_uri b/libpurple/fuzzers/corpus/markup_linkify/file_uri
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/file_uri
@@ -0,0 +1,1 @@
+file:///etc/passwd
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/ftp b/libpurple/fuzzers/corpus/markup_linkify/ftp
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/ftp
@@ -0,0 +1,1 @@
+ftp://ftp.example.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/ftps b/libpurple/fuzzers/corpus/markup_linkify/ftps
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/ftps
@@ -0,0 +1,1 @@
+ftps://ftp.example.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/http_with_port b/libpurple/fuzzers/corpus/markup_linkify/http_with_port
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/http_with_port
@@ -0,0 +1,1 @@
+http://localhost:8080
diff --git a/libpurple/fuzzers/corpus/markup_linkify/http_without_port b/libpurple/fuzzers/corpus/markup_linkify/http_without_port
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/http_without_port
@@ -0,0 +1,1 @@
+http://localhost
diff --git a/libpurple/fuzzers/corpus/markup_linkify/https_with_port b/libpurple/fuzzers/corpus/markup_linkify/https_with_port
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/https_with_port
@@ -0,0 +1,1 @@
+https://localhost:8080
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/https_without_port b/libpurple/fuzzers/corpus/markup_linkify/https_without_port
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/https_without_port
@@ -0,0 +1,1 @@
+https://localhost
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/mailto b/libpurple/fuzzers/corpus/markup_linkify/mailto
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/mailto
@@ -0,0 +1,1 @@
+mailto:user@example.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/sftp b/libpurple/fuzzers/corpus/markup_linkify/sftp
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/sftp
@@ -0,0 +1,1 @@
+sftp://ftp.example.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_linkify/xmpp b/libpurple/fuzzers/corpus/markup_linkify/xmpp
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_linkify/xmpp
@@ -0,0 +1,1 @@
+xmpp:conference.example.com
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/1a777f0381bc9856ab08298d4dc6dc35a63b8e63 b/libpurple/fuzzers/corpus/markup_strip_html/1a777f0381bc9856ab08298d4dc6dc35a63b8e63
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/1a777f0381bc9856ab08298d4dc6dc35a63b8e63
@@ -0,0 +1,1 @@
+<h1>hello</h1>
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/29e3a82a9a16d6ff244e89f5b4560bb20440466e b/libpurple/fuzzers/corpus/markup_strip_html/29e3a82a9a16d6ff244e89f5b4560bb20440466e
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/29e3a82a9a16d6ff244e89f5b4560bb20440466e
@@ -0,0 +1,1 @@
+@h1e$o<
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/2f8f0c2504a4323df12852547f9ab6c6c21eb8bd b/libpurple/fuzzers/corpus/markup_strip_html/2f8f0c2504a4323df12852547f9ab6c6c21eb8bd
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/2f8f0c2504a4323df12852547f9ab6c6c21eb8bd
@@ -0,0 +1,1 @@
+@h1>$hello<
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/3bbf989d24eef55da0ef152498a9ddb10bfb2f90 b/libpurple/fuzzers/corpus/markup_strip_html/3bbf989d24eef55da0ef152498a9ddb10bfb2f90
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/3bbf989d24eef55da0ef152498a9ddb10bfb2f90
@@ -0,0 +1,1 @@
+@h
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/4ea386144e45bae2fa66f28fbf0c52fcd0547c23 b/libpurple/fuzzers/corpus/markup_strip_html/4ea386144e45bae2fa66f28fbf0c52fcd0547c23
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/4ea386144e45bae2fa66f28fbf0c52fcd0547c23
@@ -0,0 +1,1 @@
+@h1>hello</>
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/52a719f9d01e6a1882f97bc011e52c80f807e955 b/libpurple/fuzzers/corpus/markup_strip_html/52a719f9d01e6a1882f97bc011e52c80f807e955
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/52a719f9d01e6a1882f97bc011e52c80f807e955
@@ -0,0 +1,1 @@
+˜
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/9a78211436f6d425ec38f5c4e02270801f3524f8 b/libpurple/fuzzers/corpus/markup_strip_html/9a78211436f6d425ec38f5c4e02270801f3524f8
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/9a78211436f6d425ec38f5c4e02270801f3524f8
@@ -0,0 +1,1 @@
+@
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/b63cb86f936f839caa165e6fe4994b42af357aef b/libpurple/fuzzers/corpus/markup_strip_html/b63cb86f936f839caa165e6fe4994b42af357aef
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/b63cb86f936f839caa165e6fe4994b42af357aef
@@ -0,0 +1,1 @@
+@h1$o<
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/d6a21e145aadabf71f2443a7ffbf1f12aa8cd7d0 b/libpurple/fuzzers/corpus/markup_strip_html/d6a21e145aadabf71f2443a7ffbf1f12aa8cd7d0
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/d6a21e145aadabf71f2443a7ffbf1f12aa8cd7d0
@@ -0,0 +1,1 @@
+@hh
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/f82b8ed0e7ee54f1ce781060a98ec60cfabb92d2 b/libpurple/fuzzers/corpus/markup_strip_html/f82b8ed0e7ee54f1ce781060a98ec60cfabb92d2
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/f82b8ed0e7ee54f1ce781060a98ec60cfabb92d2
@@ -0,0 +1,1 @@
+@hh1<
diff --git a/libpurple/fuzzers/corpus/markup_strip_html/fd2f837fdec7fb3c510136b4aa1d6879fb40aada b/libpurple/fuzzers/corpus/markup_strip_html/fd2f837fdec7fb3c510136b4aa1d6879fb40aada
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/markup_strip_html/fd2f837fdec7fb3c510136b4aa1d6879fb40aada
@@ -0,0 +1,1 @@
+<p>goodbye</p>
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/0a1f6191f8c649252b5a2cbd3f7ce577104468da b/libpurple/fuzzers/corpus/mime_decode_field/0a1f6191f8c649252b5a2cbd3f7ce577104468da
new file mode 100644
index 0000000000000000000000000000000000000000..985e93fd9b5ae8e1301c7ab079a3c559e4ba4007
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/21606782c65e44cac7afbb90977d8b6f82140e76 b/libpurple/fuzzers/corpus/mime_decode_field/21606782c65e44cac7afbb90977d8b6f82140e76
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/mime_decode_field/21606782c65e44cac7afbb90977d8b6f82140e76
@@ -0,0 +1,1 @@
+=
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/31ba0758bb5ac020eb234d81e4758e130de26ff0 b/libpurple/fuzzers/corpus/mime_decode_field/31ba0758bb5ac020eb234d81e4758e130de26ff0
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/mime_decode_field/31ba0758bb5ac020eb234d81e4758e130de26ff0
@@ -0,0 +1,1 @@
+=?ISO-8859-1?Q?=Keld_J=F8rn_S?imIo
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/libpurple/fuzzers/corpus/mime_decode_field/5ba93c9db0cff93f52b521d7420e43f6eda2784f
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/818f7c05acffd25d819aa76fec3d9a2e36ecd1cb b/libpurple/fuzzers/corpus/mime_decode_field/818f7c05acffd25d819aa76fec3d9a2e36ecd1cb
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/mime_decode_field/818f7c05acffd25d819aa76fec3d9a2e36ecd1cb
@@ -0,0 +1,1 @@
+=-1=
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/96bd1c480f716bef2f44a98229df7f9a99ba6eff b/libpurple/fuzzers/corpus/mime_decode_field/96bd1c480f716bef2f44a98229df7f9a99ba6eff
new file mode 100644
index 0000000000000000000000000000000000000000..2cab4ec59501f0c8f634ce641e11778540fac00c
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/a8a87bc73eb2263ac54259e44160925be5801f38 b/libpurple/fuzzers/corpus/mime_decode_field/a8a87bc73eb2263ac54259e44160925be5801f38
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/mime_decode_field/a8a87bc73eb2263ac54259e44160925be5801f38
@@ -0,0 +1,1 @@
+=-1?==elJw=
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/b73924c84bda691b55e2da85553682baf15ee48e b/libpurple/fuzzers/corpus/mime_decode_field/b73924c84bda691b55e2da85553682baf15ee48e
new file mode 100644
index 0000000000000000000000000000000000000000..6f972d9e785cd4838a84eeff234de9480bf17e58
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/ba575acca256cbd254f8d1a7d844a40fe02e0a98 b/libpurple/fuzzers/corpus/mime_decode_field/ba575acca256cbd254f8d1a7d844a40fe02e0a98
new file mode 100644
index 0000000000000000000000000000000000000000..228fa9686084251d52653e7db46a8ce27792736b
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/e179308c695066a7b176702e1ea3b204f07e13db b/libpurple/fuzzers/corpus/mime_decode_field/e179308c695066a7b176702e1ea3b204f07e13db
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/mime_decode_field/e179308c695066a7b176702e1ea3b204f07e13db
@@ -0,0 +1,1 @@
+=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=
diff --git a/libpurple/fuzzers/corpus/mime_decode_field/fc02d55def263efe37f76a5a86d0cf778a44f83b b/libpurple/fuzzers/corpus/mime_decode_field/fc02d55def263efe37f76a5a86d0cf778a44f83b
new file mode 100644
index 0000000000000000000000000000000000000000..d63e8beb91030bd5457d4830ebe962f181d78274
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/04be1d72f02a3500c070ed002872f8ac7ff43b83 b/libpurple/fuzzers/corpus/quotedp_decode/04be1d72f02a3500c070ed002872f8ac7ff43b83
new file mode 100644
index 0000000000000000000000000000000000000000..7d29ec6698f6fe05369c847aee646788845a6776
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/12dc0730307cf8e11a7a1d9c9862c1a5657aa05f b/libpurple/fuzzers/corpus/quotedp_decode/12dc0730307cf8e11a7a1d9c9862c1a5657aa05f
new file mode 100644
index 0000000000000000000000000000000000000000..57113e92ce7d772195b57a70edcf6ee7380c3c05
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/1489f923c4dca729178b3e3233458550d8dddf29 b/libpurple/fuzzers/corpus/quotedp_decode/1489f923c4dca729178b3e3233458550d8dddf29
new file mode 100644
index 0000000000000000000000000000000000000000..09f370e38f498a462e1ca0faa724559b6630c04f
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/29e2dcfbb16f63bb0254df7585a15bb6fb5e927d b/libpurple/fuzzers/corpus/quotedp_decode/29e2dcfbb16f63bb0254df7585a15bb6fb5e927d
new file mode 100644
index 0000000000000000000000000000000000000000..4227ca4e8736af63036e7457e2db376ddf7e5795
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/2d32bb27c396beef3ae2f99ab408afa090340d66 b/libpurple/fuzzers/corpus/quotedp_decode/2d32bb27c396beef3ae2f99ab408afa090340d66
new file mode 100644
index 0000000000000000000000000000000000000000..4251ee5c2b6470c914e6e4fefb555bdff062c86f
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/2f8c54f1deca15107bbb905d19a0ac4b7cd724bd b/libpurple/fuzzers/corpus/quotedp_decode/2f8c54f1deca15107bbb905d19a0ac4b7cd724bd
new file mode 100644
index 0000000000000000000000000000000000000000..1f6feb319a14a5e98bf677c200d5b56f0c26f05c
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/4e70f0aaca367e781d98ca18042ef72afa02d3d6 b/libpurple/fuzzers/corpus/quotedp_decode/4e70f0aaca367e781d98ca18042ef72afa02d3d6
new file mode 100644
index 0000000000000000000000000000000000000000..7b5f5d9a0349ea0201d82a2bc27057aeb8373839
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/4ea1b3f4f253385cd5ddc0aa987ecca5675ac7b8 b/libpurple/fuzzers/corpus/quotedp_decode/4ea1b3f4f253385cd5ddc0aa987ecca5675ac7b8
new file mode 100644
index 0000000000000000000000000000000000000000..c03c6fbe006e30c8100cd49c9f67a8d18bf7572f
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/libpurple/fuzzers/corpus/quotedp_decode/5ba93c9db0cff93f52b521d7420e43f6eda2784f
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/5f97d7d0d049f74559ba8ce365f2552aa9080ff6 b/libpurple/fuzzers/corpus/quotedp_decode/5f97d7d0d049f74559ba8ce365f2552aa9080ff6
new file mode 100644
index 0000000000000000000000000000000000000000..4427be00c7c4649fe75d24609262fcaf2d3e7a06
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/64359b01aad9d6ec48ee1ccc7192c5ba290e4fd5 b/libpurple/fuzzers/corpus/quotedp_decode/64359b01aad9d6ec48ee1ccc7192c5ba290e4fd5
new file mode 100644
index 0000000000000000000000000000000000000000..061a332721ccfcb9b1881463051b04d70854278d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/6c94b10f4445efa685650d03d2fe0a9a94d3525e b/libpurple/fuzzers/corpus/quotedp_decode/6c94b10f4445efa685650d03d2fe0a9a94d3525e
new file mode 100644
index 0000000000000000000000000000000000000000..586e1a9e76d3d4a4159e915a1026936d7f8aff66
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/6ebb78761afbe6429fd06e8f0f9394cc8e061c59 b/libpurple/fuzzers/corpus/quotedp_decode/6ebb78761afbe6429fd06e8f0f9394cc8e061c59
new file mode 100644
index 0000000000000000000000000000000000000000..9adeb455348acbf81f59b27afe2cb6390c84721b
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/77ce0377defbd11b77b1f4ad54ca40ea5ef28490 b/libpurple/fuzzers/corpus/quotedp_decode/77ce0377defbd11b77b1f4ad54ca40ea5ef28490
new file mode 100644
index 0000000000000000000000000000000000000000..ae1b13fd18107622774c7b24a665ba0d1d1e0701
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/82af9fc071dd1bece56ab73604d5beace3660ddf b/libpurple/fuzzers/corpus/quotedp_decode/82af9fc071dd1bece56ab73604d5beace3660ddf
new file mode 100644
index 0000000000000000000000000000000000000000..cd333ccce30ac720e7bfacb81d8016139d816114
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/9b16668f4e16c0e9932661855b7bcb5bad8b0f72 b/libpurple/fuzzers/corpus/quotedp_decode/9b16668f4e16c0e9932661855b7bcb5bad8b0f72
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/quotedp_decode/9b16668f4e16c0e9932661855b7bcb5bad8b0f72
@@ -0,0 +1,1 @@
+ö
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/a10909c2cdcaf5adb7e6b092a4faba558b62bd96 b/libpurple/fuzzers/corpus/quotedp_decode/a10909c2cdcaf5adb7e6b092a4faba558b62bd96
new file mode 100644
index 0000000000000000000000000000000000000000..40b450dd9d8187f90cf9f13a80c3ded26f8ecfd7
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/ac5f66ba5e1b41dfc6da5d85f61f91cb890cd5ca b/libpurple/fuzzers/corpus/quotedp_decode/ac5f66ba5e1b41dfc6da5d85f61f91cb890cd5ca
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/quotedp_decode/ac5f66ba5e1b41dfc6da5d85f61f91cb890cd5ca
@@ -0,0 +1,1 @@
+ö
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/af16377147e943bc926999a4d98726b3ec0fa989 b/libpurple/fuzzers/corpus/quotedp_decode/af16377147e943bc926999a4d98726b3ec0fa989
new file mode 100644
index 0000000000000000000000000000000000000000..092c45b85fd929b814c929df11b9e1c8448992bd
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/b3b2ad02926ad284682805103b3a1a0ec60850e2 b/libpurple/fuzzers/corpus/quotedp_decode/b3b2ad02926ad284682805103b3a1a0ec60850e2
new file mode 100644
index 0000000000000000000000000000000000000000..50dab7f3a989fa4bfebd90077d8f3e92c7094db5
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/b428cbaf48c7b3c08d326789913e6c8f6edb46e9 b/libpurple/fuzzers/corpus/quotedp_decode/b428cbaf48c7b3c08d326789913e6c8f6edb46e9
new file mode 100644
index 0000000000000000000000000000000000000000..d745e1be7b4c2f60faf3042a1c22b49ec55864f6
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/d2653a2dff226f9986c5aafc571289402e150c3c b/libpurple/fuzzers/corpus/quotedp_decode/d2653a2dff226f9986c5aafc571289402e150c3c
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/quotedp_decode/d2653a2dff226f9986c5aafc571289402e150c3c
@@ -0,0 +1,7 @@
+J'interdis aux marchands de vanter trop leurs marchandises. Car ils se font=
+ vite p=C3=A9dagogues et t'enseignent comme but ce qui n'est par essence qu=
+'un moyen, et te trompant ainsi sur la route =C3=A0 suivre les voil=C3=
+=A0 bient=C3=B4t qui te d=C3=A9gradent, car si leur musique est vulgaire il=
+s te fabriquent pour te la vendre une =C3=A2me vulgaire.
+   =E2=80=94=E2=80=89Antoine de Saint-Exup=C3=A9ry, Citadelle (1948)
+
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/d2e0e09aeb8eb6069e862b1760133f6b8f6f13c5 b/libpurple/fuzzers/corpus/quotedp_decode/d2e0e09aeb8eb6069e862b1760133f6b8f6f13c5
new file mode 100644
index 0000000000000000000000000000000000000000..6e0a06db290a7194bd47fde51de13f5ef1282bd8
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/d3e6150b97054da7dda451cbc4a1fb31d74a5e03 b/libpurple/fuzzers/corpus/quotedp_decode/d3e6150b97054da7dda451cbc4a1fb31d74a5e03
new file mode 100644
index 0000000000000000000000000000000000000000..5b91bf1bb337d4ad9a4ef77c4f498a8b2d24717e
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/e909326520ed9973fa8b4772a3b15a6ad9175a52 b/libpurple/fuzzers/corpus/quotedp_decode/e909326520ed9973fa8b4772a3b15a6ad9175a52
new file mode 100644
index 0000000000000000000000000000000000000000..be413e52400acf9ce5087fde2a399834cff97218
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/quotedp_decode/f90c4efb6990a65900271112355409e21dfee22c b/libpurple/fuzzers/corpus/quotedp_decode/f90c4efb6990a65900271112355409e21dfee22c
new file mode 100644
index 0000000000000000000000000000000000000000..1c2a683ea1babd2b38febdce270dd31ba40ebd38
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/str_to_time/098466c36e066f6d6043baab5d65f12271dcb8db b/libpurple/fuzzers/corpus/str_to_time/098466c36e066f6d6043baab5d65f12271dcb8db
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/098466c36e066f6d6043baab5d65f12271dcb8db
@@ -0,0 +1,1 @@
+2021
diff --git a/libpurple/fuzzers/corpus/str_to_time/0a01b3d8529a56ed773cc276ebedff1480a60db7 b/libpurple/fuzzers/corpus/str_to_time/0a01b3d8529a56ed773cc276ebedff1480a60db7
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/0a01b3d8529a56ed773cc276ebedff1480a60db7
@@ -0,0 +1,1 @@
+2021-09-13T22:31:14+0000
diff --git a/libpurple/fuzzers/corpus/str_to_time/2beaef1dc3fa25cdbe486b022c299b0950a495c7 b/libpurple/fuzzers/corpus/str_to_time/2beaef1dc3fa25cdbe486b022c299b0950a495c7
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/2beaef1dc3fa25cdbe486b022c299b0950a495c7
@@ -0,0 +1,1 @@
+20020910T23:08:25
diff --git a/libpurple/fuzzers/corpus/str_to_time/55ceabd365f7e42975f37d28ef1399789f5f2ebb b/libpurple/fuzzers/corpus/str_to_time/55ceabd365f7e42975f37d28ef1399789f5f2ebb
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/55ceabd365f7e42975f37d28ef1399789f5f2ebb
@@ -0,0 +1,1 @@
+19811214T12:50:00
diff --git a/libpurple/fuzzers/corpus/str_to_time/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/libpurple/fuzzers/corpus/str_to_time/5ba93c9db0cff93f52b521d7420e43f6eda2784f
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
diff --git a/libpurple/fuzzers/corpus/str_to_time/7e98be225b65ff200cde2da981b94f6d10733bce b/libpurple/fuzzers/corpus/str_to_time/7e98be225b65ff200cde2da981b94f6d10733bce
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/7e98be225b65ff200cde2da981b94f6d10733bce
@@ -0,0 +1,1 @@
+20070407T04:14:21
diff --git a/libpurple/fuzzers/corpus/str_to_time/9571c4b3656786b47e4e4bd353840677c0b064ce b/libpurple/fuzzers/corpus/str_to_time/9571c4b3656786b47e4e4bd353840677c0b064ce
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/9571c4b3656786b47e4e4bd353840677c0b064ce
@@ -0,0 +1,1 @@
+2021/09/13
diff --git a/libpurple/fuzzers/corpus/str_to_time/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc b/libpurple/fuzzers/corpus/str_to_time/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
@@ -0,0 +1,1 @@
+
diff --git a/libpurple/fuzzers/corpus/str_to_time/b14ca631b3e821186ea28d7316c14cd04964e47a b/libpurple/fuzzers/corpus/str_to_time/b14ca631b3e821186ea28d7316c14cd04964e47a
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/b14ca631b3e821186ea28d7316c14cd04964e47a
@@ -0,0 +1,1 @@
+2010-08-27.134202-0700PDT
diff --git a/libpurple/fuzzers/corpus/str_to_time/b4c200ad349c41cc3df4e4a5cd019c7bfb02b594 b/libpurple/fuzzers/corpus/str_to_time/b4c200ad349c41cc3df4e4a5cd019c7bfb02b594
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/b4c200ad349c41cc3df4e4a5cd019c7bfb02b594
@@ -0,0 +1,1 @@
+2010-08-27.204202
diff --git a/libpurple/fuzzers/corpus/str_to_time/b5db83ec80c28ae89eba0ed1aafda727719a9e03 b/libpurple/fuzzers/corpus/str_to_time/b5db83ec80c28ae89eba0ed1aafda727719a9e03
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/b5db83ec80c28ae89eba0ed1aafda727719a9e03
@@ -0,0 +1,1 @@
+2021-09
diff --git a/libpurple/fuzzers/corpus/str_to_time/b6abd567fa79cbe0196d093a067271361dc6ca8b b/libpurple/fuzzers/corpus/str_to_time/b6abd567fa79cbe0196d093a067271361dc6ca8b
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/b6abd567fa79cbe0196d093a067271361dc6ca8b
@@ -0,0 +1,1 @@
+9
diff --git a/libpurple/fuzzers/corpus/str_to_time/cce034cc8a56ea1f4b16ef73f9fd0c7176be7c35 b/libpurple/fuzzers/corpus/str_to_time/cce034cc8a56ea1f4b16ef73f9fd0c7176be7c35
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/cce034cc8a56ea1f4b16ef73f9fd0c7176be7c35
@@ -0,0 +1,1 @@
+2021-09-13
diff --git a/libpurple/fuzzers/corpus/str_to_time/e28a75aa10fd0536e645eb3d713c9623f6886487 b/libpurple/fuzzers/corpus/str_to_time/e28a75aa10fd0536e645eb3d713c9623f6886487
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/str_to_time/e28a75aa10fd0536e645eb3d713c9623f6886487
@@ -0,0 +1,1 @@
+2021/09
diff --git a/libpurple/fuzzers/corpus/xmlnode/30aae84aa6ad8371f49301386590bbd5c2689255 b/libpurple/fuzzers/corpus/xmlnode/30aae84aa6ad8371f49301386590bbd5c2689255
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/30aae84aa6ad8371f49301386590bbd5c2689255
@@ -0,0 +1,3 @@
+<pref onname='/'>
+	<pr/>
+</pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/316df27b48f5831e3640ea469f0cdcf57023b0bf b/libpurple/fuzzers/corpus/xmlnode/316df27b48f5831e3640ea469f0cdcf57023b0bf
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/316df27b48f5831e3640ea469f0cdcf57023b0bf
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pref version='1' name='/'>
+	<pref name='purple'/>
+</pref>
diff --git a/libpurple/fuzzers/corpus/xmlnode/38bb06aea57f3615ac8a1dc32fd09c7a9c289b85 b/libpurple/fuzzers/corpus/xmlnode/38bb06aea57f3615ac8a1dc32fd09c7a9c289b85
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/38bb06aea57f3615ac8a1dc32fd09c7a9c289b85
@@ -0,0 +1,1 @@
+<pref onname='/'></pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/3dd08550772c7d46f4e94e942890c5e56d1c2c7e b/libpurple/fuzzers/corpus/xmlnode/3dd08550772c7d46f4e94e942890c5e56d1c2c7e
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/3dd08550772c7d46f4e94e942890c5e56d1c2c7e
@@ -0,0 +1,3 @@
+<pref onname='/'>
+	<prpf na='purple'/>
+</pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/41275169f40caa20004ff6ee2a2ae16d6fbc8ecf b/libpurple/fuzzers/corpus/xmlnode/41275169f40caa20004ff6ee2a2ae16d6fbc8ecf
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/41275169f40caa20004ff6ee2a2ae16d6fbc8ecf
@@ -0,0 +1,3 @@
+<pref onname='/'>
+	<r/>
+</pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/45a65193e30784b0124f4fed659eb7e46552c2d0 b/libpurple/fuzzers/corpus/xmlnode/45a65193e30784b0124f4fed659eb7e46552c2d0
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/45a65193e30784b0124f4fed659eb7e46552c2d0
@@ -0,0 +1,1 @@
+¶
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/516b9783fca517eecbd1d064da2d165310b19759 b/libpurple/fuzzers/corpus/xmlnode/516b9783fca517eecbd1d064da2d165310b19759
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/516b9783fca517eecbd1d064da2d165310b19759
@@ -0,0 +1,1 @@
+p
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/5579383096576cace413bcada2548790262aaf15 b/libpurple/fuzzers/corpus/xmlnode/5579383096576cace413bcada2548790262aaf15
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/5579383096576cace413bcada2548790262aaf15
@@ -0,0 +1,1 @@
+<?xml version="1.0" encoding="utf-8"?>
diff --git a/libpurple/fuzzers/corpus/xmlnode/5cd2f399a8947efeb0e5b598a792778cf1285f3e b/libpurple/fuzzers/corpus/xmlnode/5cd2f399a8947efeb0e5b598a792778cf1285f3e
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/5cd2f399a8947efeb0e5b598a792778cf1285f3e
@@ -0,0 +1,1 @@
+<pref></pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/80e2411d546bc304503c2acd7bbc73e80f499326 b/libpurple/fuzzers/corpus/xmlnode/80e2411d546bc304503c2acd7bbc73e80f499326
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/80e2411d546bc304503c2acd7bbc73e80f499326
@@ -0,0 +1,1 @@
+<f/>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/866eb0be0988294e7265ad51a40101324a574779 b/libpurple/fuzzers/corpus/xmlnode/866eb0be0988294e7265ad51a40101324a574779
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/866eb0be0988294e7265ad51a40101324a574779
@@ -0,0 +1,3 @@
+<pref on='1' name='/'>
+	<pref name='purple'/>
+</pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/91ea61902f05cc12dbdeef10db0bbb88403d1e32 b/libpurple/fuzzers/corpus/xmlnode/91ea61902f05cc12dbdeef10db0bbb88403d1e32
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/91ea61902f05cc12dbdeef10db0bbb88403d1e32
@@ -0,0 +1,1 @@
+<pref ne='/'></pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/94dd264825fb61bfa8108613a190a472493d24b0 b/libpurple/fuzzers/corpus/xmlnode/94dd264825fb61bfa8108613a190a472493d24b0
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/94dd264825fb61bfa8108613a190a472493d24b0
@@ -0,0 +1,1 @@
+<pref/>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/aeebc2369e6a1a152f5a9968447e9917875e40d3 b/libpurple/fuzzers/corpus/xmlnode/aeebc2369e6a1a152f5a9968447e9917875e40d3
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/aeebc2369e6a1a152f5a9968447e9917875e40d3
@@ -0,0 +1,1 @@
+<pref onne='/'></pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/b9f27c892298045dcb9d56b30d19cf51994fc7de b/libpurple/fuzzers/corpus/xmlnode/b9f27c892298045dcb9d56b30d19cf51994fc7de
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/b9f27c892298045dcb9d56b30d19cf51994fc7de
@@ -0,0 +1,3 @@
+<pref version='1' name='/'>
+	<pref name='purple'/>
+</pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/corpus/xmlnode/dcca10b2bd0cd31afb69bc170b1bbd72e94e6bff b/libpurple/fuzzers/corpus/xmlnode/dcca10b2bd0cd31afb69bc170b1bbd72e94e6bff
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/corpus/xmlnode/dcca10b2bd0cd31afb69bc170b1bbd72e94e6bff
@@ -0,0 +1,3 @@
+<pref on='1' name='/'>
+	<pref na='purple'/>
+</pref>
\ No newline at end of file
diff --git a/libpurple/fuzzers/fuzz_base16_decode.c b/libpurple/fuzzers/fuzz_base16_decode.c
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/fuzz_base16_decode.c
@@ -0,0 +1,45 @@
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#include "glib.h"
+
+#include <purple.h>
+
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
+
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
+	gchar *buf = NULL;
+	size_t len = 0;
+
+	buf = g_new0(gchar, size + 1);
+	memcpy(buf, data, size);
+
+	len = strlen(buf);
+	if(len > 0 && (len % 2) == 0) {
+		guchar *tmp = purple_base16_decode(buf, NULL);
+		g_free(tmp);
+	}
+
+	g_free(buf);
+
+	return 0;
+}
diff --git a/libpurple/fuzzers/fuzz_html_to_xhtml.c b/libpurple/fuzzers/fuzz_html_to_xhtml.c
--- a/libpurple/fuzzers/fuzz_html_to_xhtml.c
+++ b/libpurple/fuzzers/fuzz_html_to_xhtml.c
@@ -28,13 +28,18 @@
 
 #include "../util.h"
 
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
 
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
 	gchar *xhtml = NULL, *plaintext = NULL;
-	gchar *malicious_html = g_new0(gchar, size + 1);
+	gchar *malicious_html = NULL;
 
+	if(!g_utf8_validate_len((const gchar *)data, size, NULL)) {
+		return 0;
+	}
+
+	malicious_html = g_new0(gchar, size + 1);
 	memcpy(malicious_html, data, size);
 	malicious_html[size] = '\0';
 
@@ -47,4 +52,3 @@
 
 	return 0;
 }
-
diff --git a/libpurple/fuzzers/fuzz_jabber_caps.c b/libpurple/fuzzers/fuzz_jabber_caps.c
--- a/libpurple/fuzzers/fuzz_jabber_caps.c
+++ b/libpurple/fuzzers/fuzz_jabber_caps.c
@@ -28,13 +28,18 @@
 #include "../xmlnode.h"
 #include "../protocols/jabber/caps.h"
 
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
 
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-	gchar *malicious_xml = g_new0(gchar, size + 1);
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
+	gchar *malicious_xml = NULL;
 	xmlnode *query;
 
+	if(!g_utf8_validate_len((const gchar *)data, size, NULL)) {
+		return 0;
+	}
+
+	malicious_xml = g_new0(gchar, size + 1);
 	memcpy(malicious_xml, data, size);
 	malicious_xml[size] = '\0';
 
diff --git a/libpurple/fuzzers/fuzz_jabber_id_new.c b/libpurple/fuzzers/fuzz_jabber_id_new.c
--- a/libpurple/fuzzers/fuzz_jabber_id_new.c
+++ b/libpurple/fuzzers/fuzz_jabber_id_new.c
@@ -25,18 +25,22 @@
 #include <string.h>
 #include <glib.h>
 
-#include "../account.h"
-#include "../conversation.h"
-#include "../xmlnode.h"
+#include <purple.h>
+
 #include "../protocols/jabber/jutil.h"
 
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
 
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
 	JabberID *jid = NULL;
-	gchar *malicious_jid = g_new0(gchar, size + 1);
+	gchar *malicious_jid = NULL;
 
+	if(!g_utf8_validate_len((const gchar *)data, size, NULL)) {
+		return 0;
+	}
+
+	malicious_jid = g_new0(gchar, size + 1);
 	memcpy(malicious_jid, data, size);
 	malicious_jid[size] = '\0';
 
@@ -48,3 +52,4 @@
 
 	return 0;
 }
+
diff --git a/libpurple/fuzzers/fuzz_markup_is_rtl.c b/libpurple/fuzzers/fuzz_markup_is_rtl.c
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/fuzz_markup_is_rtl.c
@@ -0,0 +1,44 @@
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#include "glib.h"
+
+#include <purple.h>
+
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
+
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
+	gchar *buf = NULL;
+
+	if(!g_utf8_validate_len((const gchar *)data, size, NULL)) {
+		return 0;
+	}
+
+	buf = g_new0(gchar, size + 1);
+	memcpy(buf, data, size);
+
+	purple_markup_is_rtl(buf);
+
+	g_free(buf);
+
+	return 0;
+}
diff --git a/libpurple/fuzzers/fuzz_markup_linkify.c b/libpurple/fuzzers/fuzz_markup_linkify.c
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/fuzz_markup_linkify.c
@@ -0,0 +1,44 @@
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#include "glib.h"
+
+#include "util.h"
+
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
+
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
+	gchar *buf = NULL, *ret = NULL;
+
+	if(!g_utf8_validate_len((const gchar *)data, size, NULL)) {
+		return 0;
+	}
+
+	buf = g_new0(gchar, size + 1);
+	memcpy(buf, data, size);
+	ret = purple_markup_linkify(buf);
+
+	g_free(ret);
+	g_free(buf);
+
+	return 0;
+}
diff --git a/libpurple/fuzzers/fuzz_markup_strip_html.c b/libpurple/fuzzers/fuzz_markup_strip_html.c
--- a/libpurple/fuzzers/fuzz_markup_strip_html.c
+++ b/libpurple/fuzzers/fuzz_markup_strip_html.c
@@ -21,20 +21,24 @@
 
 #include <glib.h>
 #include <stdlib.h>
-#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include <purple.h>
 
 #include "../util.h"
 
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
 
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-	gchar *malicious_html = g_new0(gchar, size + 1);
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
+	gchar *malicious_html = NULL;
 	gchar *stripped;
 
+	if(!g_utf8_validate_len((const gchar *)data, size, NULL)) {
+		return 0;
+	}
+
+	malicious_html = g_new0(gchar, size + 1);
 	memcpy(malicious_html, data, size);
 	malicious_html[size] = '\0';
 
diff --git a/libpurple/fuzzers/fuzz_mime.c b/libpurple/fuzzers/fuzz_mime_decode_field.c
rename from libpurple/fuzzers/fuzz_mime.c
rename to libpurple/fuzzers/fuzz_mime_decode_field.c
diff --git a/libpurple/fuzzers/fuzz_quotedp_decode.c b/libpurple/fuzzers/fuzz_quotedp_decode.c
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/fuzz_quotedp_decode.c
@@ -0,0 +1,42 @@
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#include "glib.h"
+
+#include <purple.h>
+
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
+
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
+	gchar *buf = NULL;
+	guchar *tmp = NULL;
+
+	buf = g_new0(gchar, size + 1);
+	memcpy(buf, data, size);
+
+	tmp = purple_quotedp_decode(buf, NULL);
+
+	g_free(buf);
+	g_free(tmp);
+
+	return 0;
+}
diff --git a/libpurple/fuzzers/fuzz_str_to_time.c b/libpurple/fuzzers/fuzz_str_to_time.c
new file mode 100644
--- /dev/null
+++ b/libpurple/fuzzers/fuzz_str_to_time.c
@@ -0,0 +1,46 @@
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#include "glib.h"
+
+#include "util.h"
+
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
+
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
+	gchar *buf = NULL;
+
+	if(!g_utf8_validate_len((const gchar *)data, size, NULL)) {
+		return 0;
+	}
+
+	purple_util_init();
+
+	buf = g_new0(gchar, size + 1);
+	memcpy(buf, data, size);
+	purple_str_to_time(buf, TRUE, NULL, NULL, NULL);
+	g_free(buf);
+
+	purple_util_uninit();
+
+	return 0;
+}
diff --git a/libpurple/fuzzers/fuzz_xmlnode.c b/libpurple/fuzzers/fuzz_xmlnode.c
--- a/libpurple/fuzzers/fuzz_xmlnode.c
+++ b/libpurple/fuzzers/fuzz_xmlnode.c
@@ -27,14 +27,19 @@
 
 #include "../xmlnode.h"
 
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
+gint LLVMFuzzerTestOneInput(const guint8 *data, size_t size);
 
-int
-LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-	gchar *malicious_xml = g_new0(gchar, size + 1);
+gint
+LLVMFuzzerTestOneInput(const guint8 *data, size_t size) {
+	gchar *malicious_xml = NULL;
 	gchar *str;
 	xmlnode *xml;
 
+	if(!g_utf8_validate_len((const gchar *)data, size, NULL)) {
+		return 0;
+	}
+
+	malicious_xml = g_new0(gchar, size + 1);
 	memcpy(malicious_xml, data, size);
 	malicious_xml[size] = '\0';
 
@@ -53,13 +58,6 @@
 		return 0;
 	}
 
-	if(strcmp(malicious_xml, str) != 0) {
-		g_free(str);
-		xmlnode_free(xml);
-		free(malicious_xml);
-		__builtin_trap();
-	}
-
 	g_free(str);
 
 	xmlnode_free(xml);
