diff options
author | midipix <writeonce@midipix.org> | 2019-09-22 22:05:43 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2019-09-22 22:07:00 +0000 |
commit | 550cac19beeaf3dca0466e0e14882a2634f0426b (patch) | |
tree | 548fe46faa6d56bcdd71c8c863c06da2291491e4 | |
parent | 02889ad214ab6d95ee1c5b68e8a405caae9aceb6 (diff) | |
download | chainport-550cac19beeaf3dca0466e0e14882a2634f0426b.tar.bz2 chainport-550cac19beeaf3dca0466e0e14882a2634f0426b.tar.xz |
mgdb: winnt_xfer_partial(): verify that pid is valid.
-rw-r--r-- | overlay/mgdb/gdb/winnt-nat.c | 12 |
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; |