[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] output: Avoid tickling UBSAN with memcpy(dest, NULL, 0)
From: |
Eric Blake |
Subject: |
[PATCH] output: Avoid tickling UBSAN with memcpy(dest, NULL, 0) |
Date: |
Fri, 13 Jan 2023 16:35:16 -0600 |
Even though all libc handle it sanely (because size 0 says there is
nothing to copy), NULL is not a valid source pointer per a strict
reading of C, so UBSAN flags it:
+output.c:511:9: runtime error: null pointer passed as argument 2, which is
declared to never be null
* src/output.c (make_room_for): Skip no-op memcpy.
Fixes: https://savannah.gnu.org/support/index.php?110809
Reported-by: Sam James
---
src/output.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/output.c b/src/output.c
index 956089b1..6dc8280a 100644
--- a/src/output.c
+++ b/src/output.c
@@ -508,7 +508,8 @@ make_room_for (int length)
{
char *buffer = output_diversion->u.buffer;
output_diversion->u.buffer = xcharalloc ((size_t) wanted_size);
- memcpy (output_diversion->u.buffer, buffer, output_diversion->used);
+ if (output_diversion->used)
+ memcpy (output_diversion->u.buffer, buffer, output_diversion->used);
free (buffer);
}
--
2.39.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] output: Avoid tickling UBSAN with memcpy(dest, NULL, 0),
Eric Blake <=