From 7ad8a17dfacb027b89c6a1d660d7126d3b6a1be2 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Mon, 4 Dec 2017 12:36:49 +0000
Subject: [PATCH] utils: Add an abort-on-OOM wrapper for asprintf

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 utils/utils.c | 16 ++++++++++++++++
 utils/utils.h |  1 +
 2 files changed, 17 insertions(+)

diff --git a/utils/utils.c b/utils/utils.c
index b38292fc3..f6da457c9 100644
--- a/utils/utils.c
+++ b/utils/utils.c
@@ -429,6 +429,22 @@ xcalloc( size_t n, size_t size )
     return ret;
 }
 
+int
+xasprintf( char **dest, const char *format, ...)
+{
+    int ret;
+    va_list ap;
+
+    va_start( ap, format );
+    ret = vasprintf( dest, format, ap );
+    va_end( ap );
+
+    if( ret < 0 )
+        oom();
+
+    return ret;
+}
+
 /*
  * _capsule_set_error_literal:
  * @code_dest: (out) (optional): used to return an errno value
diff --git a/utils/utils.h b/utils/utils.h
index 7db98bac1..1947cb0f3 100644
--- a/utils/utils.h
+++ b/utils/utils.h
@@ -88,6 +88,7 @@ void oom( void ) __attribute__((noreturn));
 char *xstrdup( const char *s );
 void *xrealloc( void *ptr, size_t size ) __attribute__((alloc_size(2)));
 void *xcalloc( size_t n, size_t size ) __attribute__((alloc_size(1, 2), malloc));
+int xasprintf( char **s, const char *format, ...) __attribute__((format(printf, 2, 3)));
 
 /*
  * _capsule_steal_pointer:
-- 
GitLab