diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2021-12-17 13:15:38 -0800 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2021-12-17 13:15:38 -0800 |
commit | 90978e15bc9a23c208b25bf7ea697a5d0925562b (patch) | |
tree | 6bdc96b7eefd208ef671395e898f6e2aa36f745e /include | |
parent | 93dc314c9225e103487ae22b62da1ac59ac86325 (diff) | |
parent | ce2ff9cccf0c5f123f9d1e3d5e4fc07d1c2c159d (diff) |
Merge tag 'trivial-branch-for-7.0-pull-request' of https://gitlab.com/laurent_vivier/qemu into staging
Trivial patches pull request 20211217
# gpg: Signature made Fri 17 Dec 2021 12:09:51 PM PST
# gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
# gpg: issuer "laurent@vivier.eu"
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [unknown]
# gpg: aka "Laurent Vivier <laurent@vivier.eu>" [unknown]
# gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg: There is no indication that the signature belongs to the owner.
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C
* tag 'trivial-branch-for-7.0-pull-request' of https://gitlab.com/laurent_vivier/qemu:
checkpatch: Do not allow deprecated g_memdup()
tests/qtest: Replace g_memdup() by g_memdup2()
glib-compat: Introduce g_memdup2() wrapper
docs/block-replication.txt: Fix replication top-id command demo
hw/virtio/vhost: Fix typo in comment.
hw/avr: Realize AVRCPU qdev object using qdev_realize()
qemu-keymap: Add license in generated files
target/i386/kvm: Replace use of __u32 type
configure: Symlink binaries using .exe suffix with MinGW
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/glib-compat.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/include/glib-compat.h b/include/glib-compat.h index 9e95c888f5..8d01a8c01f 100644 --- a/include/glib-compat.h +++ b/include/glib-compat.h @@ -68,6 +68,43 @@ * without generating warnings. */ +/* + * g_memdup2_qemu: + * @mem: (nullable): the memory to copy. + * @byte_size: the number of bytes to copy. + * + * Allocates @byte_size bytes of memory, and copies @byte_size bytes into it + * from @mem. If @mem is %NULL it returns %NULL. + * + * This replaces g_memdup(), which was prone to integer overflows when + * converting the argument from a #gsize to a #guint. + * + * This static inline version is a backport of the new public API from + * GLib 2.68, kept internal to GLib for backport to older stable releases. + * See https://gitlab.gnome.org/GNOME/glib/-/issues/2319. + * + * Returns: (nullable): a pointer to the newly-allocated copy of the memory, + * or %NULL if @mem is %NULL. + */ +static inline gpointer g_memdup2_qemu(gconstpointer mem, gsize byte_size) +{ +#if GLIB_CHECK_VERSION(2, 68, 0) + return g_memdup2(mem, byte_size); +#else + gpointer new_mem; + + if (mem && byte_size != 0) { + new_mem = g_malloc(byte_size); + memcpy(new_mem, mem, byte_size); + } else { + new_mem = NULL; + } + + return new_mem; +#endif +} +#define g_memdup2(m, s) g_memdup2_qemu(m, s) + #if defined(G_OS_UNIX) /* * Note: The fallback implementation is not MT-safe, and it returns a copy of |