summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin')
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/mmap.cc2
2 files changed, 6 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 57f7092cc..ed37e0b4d 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * mmap.cc (mmap64): Avoid crash if file size is less than requested
+ map length.
+
2003-08-13 Igor Pechtchanski <pechtcha@cs.nyu.edu>
* path.cc (special_name): Add checks for some specials followed by
diff --git a/winsup/cygwin/mmap.cc b/winsup/cygwin/mmap.cc
index 7d8809e47..6af4946a7 100644
--- a/winsup/cygwin/mmap.cc
+++ b/winsup/cygwin/mmap.cc
@@ -600,7 +600,7 @@ mmap64 (caddr_t addr, size_t len, int prot, int flags, int fd, _off64_t off)
}
/* Insert into the list */
- mmap_record *rec = map_list->add_record (mmap_rec, off, len);
+ mmap_record *rec = map_list->add_record (mmap_rec, off, len > gran_len ? gran_len : len);
caddr_t ret = rec->get_address () + (off - gran_off);
syscall_printf ("%x = mmap() succeeded", ret);
ReleaseResourceLock (LOCK_MMAP_LIST, READ_LOCK | WRITE_LOCK, "mmap");