pidgin/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/
/** @page cmd-signals Command Signals
@signals
@signal cmd-added
@signal cmd-removed
@endsignals
@see cmds.h
@signaldef cmd-added
@signalproto
void (*cmd_added)(const char *command, PurpleCmdPriority priority,
PurpleCmdFlag flag);
@endsignalproto
@signaldesc
Emitted when a new command is added.
@param command The new command.
@param priority The priority of the new command.
@param flag The command flags.
@endsignaldef
@signaldef cmd-removed
@signalproto
void (*cmd_removed)(const char *command);
@endsignalproto
@signaldesc
Emitted when a command is removed.
@param command The removed command.
@endsignaldef
*/