From 8235bbe467be78befe56e7a5dc914e5e35785fa3 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 4 Nov 2019 13:41:14 +0000 Subject: [PATCH] gbytes: Avoid memcmp (NULL, ., 0) or memcmp (., NULL, 0) Similar to 3837b83f, glibc memcmp is declared with the first two arguments annotated as non-null via an attribute, which results in the undefined behaviour sanitizer considering it to be UB to pass a null pointer there (even if we are comparing 0 bytes, and hence not actually dereferencing the pointer). This shows up in /gvariant/serialiser/children when run with the undefined behaviour sanitizer. Signed-off-by: Simon McVittie --- glib/gbytes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glib/gbytes.c b/glib/gbytes.c index 7b72886e5..ec6923188 100644 --- a/glib/gbytes.c +++ b/glib/gbytes.c @@ -365,7 +365,7 @@ g_bytes_equal (gconstpointer bytes1, g_return_val_if_fail (bytes2 != NULL, FALSE); return b1->size == b2->size && - memcmp (b1->data, b2->data, b1->size) == 0; + (b1->size == 0 || memcmp (b1->data, b2->data, b1->size) == 0); } /**