mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-19 01:19:41 +08:00
Don't copy memory for arguments if there are none
If amd64_windows_push_arguments is called with no arguments, then ARGS can be NULL, and inside the passed-by-pointer block, memcpy is called with this NULL, which is undefined behavior. So this just disable the passed-by-pointer block if there are no arguments. Fixes the following ubsan error: C:/gdb/src/gdb.git/gdb/amd64-windows-tdep.c:244:12: runtime error: null pointer passed as argument 2, which is declared to never be null Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
@@ -238,6 +238,7 @@ amd64_windows_push_arguments (struct regcache *regcache, int nargs,
|
||||
These arguments are replaced by pointers to a copy we are making
|
||||
in inferior memory. So use a copy of the ARGS table, to avoid
|
||||
modifying the original one. */
|
||||
if (nargs > 0)
|
||||
{
|
||||
struct value **args1 = XALLOCAVEC (struct value *, nargs);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user