pidgin/pidgin

Add fuzzing support for some libpurple features
release-2.x.y
2021-06-24, Jordy Zomer <>
97c51d97d375
Add fuzzing support for some libpurple features

Testing Done:
Hi!

I built and tested all of these fuzzers for libpurple.

You can build them by first building pidgin/libpurple with `--enable-fuzzing` then going into `libpurple/tests` and run `make check`. After that you can run these fuzzers. With a dictionary if you want :)

for example:
```bash
$ ./fuzz_markup_strip_html -dict=dictionaries/html.dict
Dictionary: 465 entries
INFO: Seed: 2274862685
INFO: Loaded 1 modules (3 inline 8-bit counters): 3 [0x5a4ec0, 0x5a4ec3),
INFO: Loaded 1 PC tables (3 PCs): 3 [0x568ee8,0x568f18),
INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
INFO: A corpus is not provided, starting from an empty corpus
#2 INITED cov: 2 ft: 2 corp: 1/1b exec/s: 0 rss: 30Mb
#1048576 pulse cov: 2 ft: 2 corp: 1/1b lim: 4096 exec/s: 524288 rss: 789Mb
#2097152 pulse cov: 2 ft: 2 corp: 1/1b lim: 4096 exec/s: 524288 rss: 792Mb
```

Best Regards,

Jordy Zomer

Reviewed at https://reviews.imfreedom.org/r/760/
#
# targets.mak
#
# This file should be included at the end of all Makefile.mingw
# files for better handling of cross directory dependencies
#
$(PIDGIN_CONFIG_H): $(PIDGIN_CONFIG_H).mingw $(PIDGIN_TREE_TOP)/configure.ac
sed -e 's/@VERSION@/$(PIDGIN_VERSION)/; s/@DISPLAY_VERSION@/$(DISPLAY_VERSION)/' $@.mingw > $@
$(PURPLE_PURPLE_H): $(PURPLE_PURPLE_H).in
sed -e 's/@PLUGINS_DEFINE@/#define PURPLE_PLUGINS 1/' $@.in > $@
$(PURPLE_VERSION_H): $(PURPLE_VERSION_H).in $(PIDGIN_TREE_TOP)/configure.ac
awk 'BEGIN {FS="[\\(\\)\\[\\]]"} \
/^m4_define..purple_major_version/ {system("sed -e s/@PURPLE_MAJOR_VERSION@/"$$5"/ $@.in > $@");} \
/^m4_define..purple_minor_version/ {system("sed -e s/@PURPLE_MINOR_VERSION@/"$$5"/ $@ > $@.tmp && mv $@.tmp $@");} \
/^m4_define..purple_micro_version/ {system("sed -e s/@PURPLE_MICRO_VERSION@/"$$5"/ $@ > $@.tmp && mv $@.tmp $@"); exit}' $(PIDGIN_TREE_TOP)/configure.ac
$(PIDGIN_REVISION_RAW_TXT):
(hg --cwd $(PIDGIN_TREE_TOP) log -r . -T '{node}') 2>/dev/null >$@ \
|| rm -f $@
$(PIDGIN_REVISION_H): $(PIDGIN_REVISION_RAW_TXT)
if [ -f $< ]; then \
sed 's/^\(.\{1,\}\)$$/#define REVISION "\1"/' $< > $@; \
fi
[ -f $@ ] || echo "#define REVISION \"unknown\"" > $@
$(PURPLE_DLL) $(PURPLE_DLL).a: $(PURPLE_VERSION_H)
$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) libpurple.dll
$(PURPLE_PERL_DLL) $(PURPLE_PERL_DLL).a:
$(MAKE) -C $(PURPLE_PERL_TOP) -f $(MINGW_MAKEFILE) perl.dll
$(PIDGIN_DLL) $(PIDGIN_DLL).a:
$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) pidgin.dll
$(PIDGIN_EXE):
$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) pidgin.exe
# Installation Directories
$(PIDGIN_INSTALL_DIR):
mkdir -p $(PIDGIN_INSTALL_DIR)
$(PIDGIN_INSTALL_PERL_DIR):
mkdir -p $(PIDGIN_INSTALL_PERL_DIR)
$(PIDGIN_INSTALL_PLUGINS_DIR):
mkdir -p $(PIDGIN_INSTALL_PLUGINS_DIR)
$(PURPLE_INSTALL_PO_DIR):
mkdir -p $(PURPLE_INSTALL_PO_DIR)
#$(PURPLE_INSTALL_PLUGINS_DIR):
# mkdir -p $(PURPLE_INSTALL_PLUGINS_DIR)
#$(PURPLE_INSTALL_PERL_DIR):
# mkdir -p $(PURPLE_INSTALL_PERL_DIR)