summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Blandy <jimb@redhat.com>2004-11-01 04:09:09 +0000
committerJim Blandy <jimb@redhat.com>2004-11-01 04:09:09 +0000
commit7470d935ea74bffd190b78933e23f018c6f40de9 (patch)
treeb5efff7ddfa4483bac1c8bd2f2f3480edf851e47
parentee27141cae7d94d90af86cc34fb7cbc62fdcf78d (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--rda/unix/linux-target.c14
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
{