pidgin/pidgin

Implement mitigation for GHSL-2021-045
release-2.x.y
2021-02-07, Gary Kramlich
fb2056ce3c58
Implement mitigation for GHSL-2021-045

This add a static inline version of `g_memdup2` if the version of glib we're
compiling against doesn't have the function.

GHSL-2021-045 was originally reported to glib at
https://gitlab.gnome.org/GNOME/glib/-/issues/2319.

More information about the entire situation can be found on the gnome
desktop-devel-list at
https://mail.gnome.org/archives/desktop-devel-list/2021-February/msg00000.html

Testing Done:
Compiled and ran tests locally.

Reviewed at https://reviews.imfreedom.org/r/483/
/** @page gtkimhtml-signals GtkIMHtml Signals
@signals
@signal url_clicked
@signal format_buttons_update
@signal format_function_clear
@signal format_function_toggle
@signal format_function_update
@signal paste
@endsignals
@see gtkimhtml.h
<hr>
@signaldef url_clicked
@signalproto
void (*url_clicked)(GtkIMHtml *imhtml, char *uri);
@endsignalproto
@signaldesc Emitted when a link is clicked
@param imhtml The GtkIMHtml emitting the signal.
@param url The uri.
@endsignaldef
@signaldef format_buttons_update
@signalproto
void (*format_buttons_update)(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, gpointer data);
@endsignalproto
@signaldesc Emitted when allowed formatting has changed.
@param imhtml The GtkIMHtml emitting the signal.
@param buttons GtkIMHtmlButtons for the GtkIMHtml.
@param data User defined data.
@endsignaldef
@signaldef format_function_clear
@signalproto
void (*format_function_clear)(GtkIMHtml *imhtml, gpointer data);
@endsignalproto
@signaldesc Emitted when clearing the formatting for the GtkIMHtml.
@param imhtml The GtkIMHtml emitting the signal.
@param data User defined data.
@endsignaldef
@signaldef format_function_toggle
@signalproto
void (*format_function_toggle)(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, gpointer data);
@endsignalproto
@signaldesc Emitted when a format has been toggled.
@param imhtml The GtkIMHtml emitting the signal.
@param buttons GtkIMHtmlButtons for the GtkIMHtml.
@param data User defined data.
@endsignaldef
@signaldef format_function_update
@signalproto
void (*format_function_update)(GtkIMHtml *imhtml, gpointer data);
@endsignalproto
@signaldesc Emitted when the cursor has moved and formatting has changed
@param imhtml The GtkIMHtml emitting the signal.
@param data User defined data.
@signaldef paste
@signalproto
void (*paste) (GtkIMHtml *imhtml, char *format)
@endsignalproto
@signaldesc Emitted when paste from the clipboard is requested.
@param imhtml The GtkIMHtml emitting the signal.
@param format If 'text', then the formatting of the clipboard content
will be removed before pasting. If empty or 'html', then
the formatting will not be removed. Any other value for
this parameter is ignored and nothing is pasted.
@endsignaldef
*/
// vim: syntax=c.doxygen tw=75 et