Fix shmdt by using the right argument for the shared segment address.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2269 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_syscalls.c b/coregrind/vg_syscalls.c
index d3d6aa9..1623d7d 100644
--- a/coregrind/vg_syscalls.c
+++ b/coregrind/vg_syscalls.c
@@ -2648,7 +2648,7 @@
break;
}
case 22: /* IPCOP_shmdt */
- if (!valid_client_addr(arg1, 1, tid, "shmdt"))
+ if (!valid_client_addr(arg5, 1, tid, "shmdt"))
res = -VKI_EINVAL;
break;
case 23: /* IPCOP_shmget */
@@ -2787,9 +2787,9 @@
}
case 22: /* IPCOP_shmdt */
{
- Segment *s = VG_(find_segment)(arg1);
+ Segment *s = VG_(find_segment)(arg5);
- if (s != NULL && (s->flags & SF_SHM) && VG_(seg_contains)(s, arg1, 1)) {
+ if (s != NULL && (s->flags & SF_SHM) && VG_(seg_contains)(s, arg5, 1)) {
VG_TRACK( die_mem_munmap, s->addr, s->len );
VG_(unmap_range)(s->addr, s->len);
}