[glib/wip/smcv/array-memcpy-ub] array: Avoid use of memcpy(dest, NULL, 0)
- From: Simon McVittie <smcv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/smcv/array-memcpy-ub] array: Avoid use of memcpy(dest, NULL, 0)
- Date: Thu, 24 Oct 2019 11:09:16 +0000 (UTC)
commit 3837b83f5aea43a9ac523500e16af5ae08fdefc8
Author: Simon McVittie <smcv collabora com>
Date: Thu Oct 24 11:53:23 2019 +0100
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 <smcv collabora com>
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));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]