Hi Erik, On May 12 15:30, Erik Bray wrote: > Hi all, > > This issue pertains to Cygwin 64-bit. The following example program > demonstrates the issue: > > $ cat mmap_test.c > #include <sys/mman.h> > #include <stdio.h> > #include <windows.h> > > > #define VSIZE 0x100001000 > #define SIZE 0x1000 > > > void foo() { > void *top, *bot, *c; > > c = mmap(NULL, VSIZE, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0); > > top = c + VSIZE; > bot = top - SIZE; > > printf(" c = 0x%016lx\n", c); > printf(" top = 0x%016lx\n", top); > printf(" bot = 0x%016lx\n", bot); > > printf(" c[0] = %ul\n", *((unsigned long *)c)); > printf("bot[0] = %ul\n", *((unsigned long *)bot)); > } > > > int main(void) { > foo(); > return 0; > } > > $ gcc mmap_test.c -o mmap_test > > $ ./mmap_test.exe > c = 0x000006feffff0000 > top = 0x000006ffffff1000 > bot = 0x000006ffffff0000 > c[0] = 0l > Segmentation fault (core dumped) > > --------------------------------------------------
Thanks especially for the testcase. I just applied a fix for this which, hopefully, catches all problems with too small length/size variables and parameters. I've uploaded a new developer snapshot to https://cygwin.com/snapshots/ Would you mind to inspect the patch(*) critically? Thanks a lot, Corinna (*) https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=commitdiff;h=0aa738220bb9dea2ad479e484560767b36701947 -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat
signature.asc
Description: PGP signature