Robert Schuster wrote: > gcc found a problem in our native/jni/javanet/local.c. > > I changed it to what I think makes sense but I am not sure whether this > is still the intended behavior. > > Furthermore since overrunning the bounds of a stack allocated array may > trash other stuff on the stack I wonder whether this fix also prevents > the problem that the workaround above the modified code speaks of. Since > I do not run Darwin-based OS I cannot test it myself. That may well be right. IMO it should be more like Index: local.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/java-net/local.c,v retrieving revision 1.4 diff -u -r1.4 local.c --- local.c 17 Apr 2007 21:46:27 -0000 1.4 +++ local.c 27 Jun 2008 10:21:12 -0000 @@ -86,14 +86,13 @@ if (gcc_sucks) fprintf (stderr, "bind %p\n", addr); - if (strlen (addr) > sizeof (saddr.sun_path)) + if (strlen (addr) >= sizeof (saddr.sun_path)) { errno = ENAMETOOLONG; return -1; } - strncpy (saddr.sun_path, addr, sizeof (saddr.sun_path)); - saddr.sun_path[sizeof (saddr.sun_path)] = '\0'; + strcpy (saddr.sun_path, addr); saddr.sun_family = AF_LOCAL; return bind (fd, (struct sockaddr *) &saddr, SUN_LEN (&saddr));