rewtguy/pidgin

Fix leak that may occur when xmlnode_from_str fails
release-2.x.y
2021-09-13, Elliott Sales de Andrade
59a77978ca08
Fix leak that may occur when xmlnode_from_str fails

The failure may occur any time in the middle of parsing, and `xpd->current` may
not actually be pointing to the root of the parsed tree. Thus we need to walk
back up before freeing the xmlnode.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=34988

Testing Done:
Ran the reproducer testcase on `fuzz_xml`

Reviewed at https://reviews.imfreedom.org/r/911/
EXTRA_DIST = \
Makefile.mingw \
README \
TODO
pkgdir = $(libdir)/purple-$(PURPLE_MAJOR_VERSION)
SILCSOURCES = \
buddy.c \
chat.c \
ft.c \
ops.c \
pk.c \
silc.c \
silcpurple.h \
util.c \
wb.c \
wb.h
AM_CFLAGS = $(st)
libsilcpurple_la_LDFLAGS = -module -avoid-version
if STATIC_SILC
st = -DPURPLE_STATIC_PRPL $(SILC_CFLAGS)
noinst_LTLIBRARIES = libsilcpurple.la
libsilcpurple_la_SOURCES = $(SILCSOURCES)
libsilcpurple_la_CFLAGS = $(AM_CFLAGS)
libsilcpurple_la_LIBADD = $(SILC_LIBS)
else
st = $(SILC_CFLAGS)
pkg_LTLIBRARIES = libsilcpurple.la
libsilcpurple_la_SOURCES = $(SILCSOURCES)
libsilcpurple_la_LIBADD = $(GLIB_LIBS) $(SILC_LIBS)
endif
AM_CPPFLAGS = \
-I$(top_srcdir)/libpurple \
-I$(top_builddir)/libpurple \
$(DEBUG_CFLAGS) \
$(GLIB_CFLAGS) \
$(SILC_CFLAGS)