summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2019-09-22 22:05:43 +0000
committermidipix <writeonce@midipix.org>2019-09-22 22:07:00 +0000
commit550cac19beeaf3dca0466e0e14882a2634f0426b (patch)
tree548fe46faa6d56bcdd71c8c863c06da2291491e4
parent02889ad214ab6d95ee1c5b68e8a405caae9aceb6 (diff)
downloadchainport-550cac19beeaf3dca0466e0e14882a2634f0426b.tar.bz2
chainport-550cac19beeaf3dca0466e0e14882a2634f0426b.tar.xz
mgdb: winnt_xfer_partial(): verify that pid is valid.
-rw-r--r--overlay/mgdb/gdb/winnt-nat.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/overlay/mgdb/gdb/winnt-nat.c b/overlay/mgdb/gdb/winnt-nat.c
index 80641c2..37ff7bf 100644
--- a/overlay/mgdb/gdb/winnt-nat.c
+++ b/overlay/mgdb/gdb/winnt-nat.c
@@ -368,13 +368,9 @@ static enum target_xfer_status winnt_xfer_partial(
ULONGEST * nxfered)
{
ssize_t ret;
- pid_t pid;
struct winnt_process * pidinfo;
- pid = inferior_ptid.pid;
-
- if (!(pidinfo = winnt_process_record(pid)))
- winnt_perror("internal error: record not found",pid);
+ pidinfo = winnt_process_record(inferior_ptid.pid);
if (readbuf && writebuf)
winnt_error("internal error: both readbuf and writebuf are non-null.");
@@ -387,12 +383,18 @@ static enum target_xfer_status winnt_xfer_partial(
switch (object) {
case TARGET_OBJECT_MEMORY:
+ if (!pidinfo)
+ return TARGET_XFER_E_IO;
+
ret = (readbuf)
? __dbg_vm_read(pidinfo->pfd,readbuf,len,offset)
: __dbg_vm_write(pidinfo->pfd,writebuf,len,offset);
break;
case TARGET_OBJECT_LIBRARIES:
+ if (!pidinfo)
+ return TARGET_XFER_E_IO;
+
ret = winnt_xfer_solibs(pidinfo,readbuf,offset,len);
break;