From 3837b83f5aea43a9ac523500e16af5ae08fdefc8 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 24 Oct 2019 11:53:23 +0100 Subject: [PATCH] array: Avoid use of memcpy(dest, NULL, 0) glibc declares memcpy() with the first two arguments (the pointers) annotated as non-null via an attribute, which results in the undefined behaviour sanitizer considering it to be UB to pass a null pointer in the second argument, even if we are copying 0 bytes (and hence not actually dereferencing the pointer). This shows up in array-test when run with the undefined behaviour sanitizer. Signed-off-by: Simon McVittie --- glib/garray.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glib/garray.c b/glib/garray.c index 2e8dd0b6b..4cbfd1373 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -1146,7 +1146,7 @@ g_ptr_array_copy (GPtrArray *array, for (i = 0; i < array->len; i++) new_array->pdata[i] = func (array->pdata[i], user_data); } - else + else if (array->len > 0) { memcpy (new_array->pdata, array->pdata, array->len * sizeof (*array->pdata)); @@ -1797,7 +1797,7 @@ g_ptr_array_extend (GPtrArray *array_to_extend, rarray_to_extend->pdata[i + rarray_to_extend->len] = func (array->pdata[i], user_data); } - else + else if (array->len > 0) { memcpy (rarray_to_extend->pdata + rarray_to_extend->len, array->pdata, array->len * sizeof (*array->pdata));