glib-compat: Introduce g_memdup2() wrapper
authorPhilippe Mathieu-Daudé <philmd@redhat.com>
Fri, 3 Sep 2021 17:44:44 +0000 (19:44 +0200)
committerLaurent Vivier <laurent@vivier.eu>
Fri, 17 Dec 2021 10:54:07 +0000 (11:54 +0100)
commit2c674fada72079583a3f2cc1790b16a0259c4fa0
tree9d1a10f195b1d1d131734458b994713dcad79a9d
parent036ef344b6c51f651a3b5c6ca56868fa3e6554fe
glib-compat: Introduce g_memdup2() wrapper

When experimenting raising GLIB_VERSION_MIN_REQUIRED to 2.68
(Fedora 34 provides GLib 2.68.1) we get:

  hw/virtio/virtio-crypto.c:245:24: error: 'g_memdup' is deprecated: Use 'g_memdup2' instead [-Werror,-Wdeprecated-declarations]
  ...

g_memdup() has been updated by g_memdup2() to fix eventual security
issues (size argument is 32-bit and could be truncated / wrapping).
GLib recommends to copy their static inline version of g_memdup2():
https://discourse.gnome.org/t/port-your-module-from-g-memdup-to-g-memdup2-now/5538

Our glib-compat.h provides a comment explaining how to deal with
these deprecated declarations (see commit e71e8cc0355
"glib: enforce the minimum required version and warn about old APIs").

Following this comment suggestion, implement the g_memdup2_qemu()
wrapper to g_memdup2(), and use the safer equivalent inlined when
we are using pre-2.68 GLib.

Reported-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20210903174510.751630-3-philmd@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
include/glib-compat.h