diff -r d69afa89c2ee -r bc9705db542b src/sim/syscall_emul.hh --- a/src/sim/syscall_emul.hh Sun Apr 29 02:26:34 2012 -0700 +++ b/src/sim/syscall_emul.hh Sun Apr 29 02:38:56 2012 -0700 @@ -1004,6 +1004,9 @@ int tgt_fd = p->getSyscallArg(tc, index); // int offset = p->getSyscallArg(tc, index); + if (length > 0x100000000ULL) + panic("mmap length argument %#x is unreasonably large.\n", length); + if (!(flags & OS::TGT_MAP_ANONYMOUS)) { Process::FdMap *fd_map = p->sim_fd_obj(tgt_fd); if (!fd_map || fd_map->fd < 0) {