diff options
author | Jim Blandy <jimb@redhat.com> | 2004-11-01 04:09:09 +0000 |
---|---|---|
committer | Jim Blandy <jimb@redhat.com> | 2004-11-01 04:09:09 +0000 |
commit | 7470d935ea74bffd190b78933e23f018c6f40de9 (patch) | |
tree | b5efff7ddfa4483bac1c8bd2f2f3480edf851e47 | |
parent | ee27141cae7d94d90af86cc34fb7cbc62fdcf78d (diff) | |
download | gdb-7470d935ea74bffd190b78933e23f018c6f40de9.tar.gz |
* linux-target.c (linux_get_reg): When register REGNO doesn't exist,
provide zeros for its value; don't use an uninitialized pointer.
-rw-r--r-- | rda/unix/ChangeLog | 5 | ||||
-rw-r--r-- | rda/unix/linux-target.c | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/rda/unix/ChangeLog b/rda/unix/ChangeLog index 2333aa0a8bb..b9f5330cf1c 100644 --- a/rda/unix/ChangeLog +++ b/rda/unix/ChangeLog @@ -1,3 +1,8 @@ +2004-10-31 Jim Blandy <jimb@redhat.com> + + * linux-target.c (linux_get_reg): When register REGNO doesn't exist, + provide zeros for its value; don't use an uninitialized pointer. + 2004-10-29 Jim Blandy <jimb@redhat.com> * linux-target.c (linux_set_reg): Delete unused variables. diff --git a/rda/unix/linux-target.c b/rda/unix/linux-target.c index 610f1d1e5ae..f70fa2d65f7 100644 --- a/rda/unix/linux-target.c +++ b/rda/unix/linux-target.c @@ -1958,7 +1958,19 @@ linux_get_reg (struct gdbserv *serv, int regno, struct gdbserv_reg *reg) } else if (reginfo[regno].whichregs == NOREGS) { - /* Do nothing. */ + /* A buffer initialized to zeros we can refer to. */ + static struct gdbserv_reg zeros; + + /* Make sure we're not going to try to copy out more bytes than + we have. */ + assert (reginfo[regno].ptrace_size <= sizeof (zeros.buf)); + + /* Make sure we don't have some random offset that will take us + beyond the end of the buffer. Offsets for NOREGS entries + should be zero. */ + assert (reginfo[regno].offset == 0); + + buf = (char *) zeros.buf; } else { |