[libvirt] [PATCH v3] glibcompat: Reimplement g_strdup_printf() and g_strdup_vprintf()

Ján Tomko jtomko at redhat.com
Fri Oct 18 12:49:17 UTC 2019


On Fri, Oct 18, 2019 at 02:40:41PM +0200, Michal Privoznik wrote:
>These functions don't really abort() on OOM. The fix was merged
>upstream, but not in the minimal version we require. Provide our
>own implementation which can be removed once we bump the minimal
>version.
>
>Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>---
>
>Diff to v3:
>- fixed infinite recursion
>
> src/internal.h           |  1 +
> src/libvirt_private.syms |  5 ++++
> src/util/Makefile.inc.am |  2 ++
> src/util/glibcompat.c    | 51 ++++++++++++++++++++++++++++++++++++++++
> src/util/glibcompat.h    | 31 ++++++++++++++++++++++++
> 5 files changed, 90 insertions(+)
> create mode 100644 src/util/glibcompat.c
> create mode 100644 src/util/glibcompat.h
>
>diff --git a/src/internal.h b/src/internal.h
>index fb17b87baa..5b0a2335f5 100644
>--- a/src/internal.h
>+++ b/src/internal.h
>@@ -64,6 +64,7 @@
> #include "libvirt/virterror.h"
>
> #include "c-strcase.h"
>+#include "glibcompat.h"
>
> /* Merely casting to (void) is not sufficient since the
>  * introduction of the "warn_unused_result" attribute
>diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
>index 0da02bb8bd..206295bef0 100644
>--- a/src/libvirt_private.syms
>+++ b/src/libvirt_private.syms
>@@ -1485,6 +1485,11 @@ virSecurityManagerTransactionStart;
> virSecurityManagerVerify;
>
>
>+# util/glibcompat.h
>+vir_g_strdup_printf;
>+vir_g_strdup_vprintf;
>+
>+
> # util/viralloc.h
> virAlloc;
> virAllocN;
>diff --git a/src/util/Makefile.inc.am b/src/util/Makefile.inc.am
>index 705b93c93c..d8c8e61c4b 100644
>--- a/src/util/Makefile.inc.am
>+++ b/src/util/Makefile.inc.am
>@@ -3,6 +3,8 @@
> # These files are not related to driver APIs. Simply generic
> # helper APIs for various purposes
> UTIL_SOURCES = \
>+	util/glibcompat.c \
>+	util/glibcompat.h \
> 	util/viralloc.c \
> 	util/viralloc.h \
> 	util/virarch.c \
>diff --git a/src/util/glibcompat.c b/src/util/glibcompat.c
>new file mode 100644
>index 0000000000..5c50153efe
>--- /dev/null
>+++ b/src/util/glibcompat.c
>@@ -0,0 +1,51 @@
>+/*
>+ * Copyright (C) 2019 Red Hat, Inc.
>+ *
>+ * This library is free software; you can redistribute it and/or
>+ * modify it under the terms of the GNU Lesser General Public
>+ * License as published by the Free Software Foundation; either
>+ * version 2.1 of the License, or (at your option) any later version.
>+ *
>+ * This library is distributed in the hope that it will be useful,
>+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
>+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>+ * Lesser General Public License for more details.
>+ *
>+ * You should have received a copy of the GNU Lesser General Public
>+ * License along with this library.  If not, see
>+ * <http://www.gnu.org/licenses/>.
>+ */
>+
>+#include <config.h>
>+
>+#include "glibcompat.h"
>+
>+#undef g_strdup_printf
>+#undef g_strdup_vprintf
>+
>+/* Due to a bug in glib, g_strdup_printf() nor g_strdup_vprintf()
>+ * abort on OOM.  It's fixed in glib's upstream. Provide our own
>+ * implementation until the fix get's distributed. */

*gets

Also, please see
https://www.redhat.com/archives/libvir-list/2019-October/msg01170.html
before pushing

Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20191018/c724fecf/attachment-0001.sig>


More information about the libvir-list mailing list