This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: strlen on a NULL


On Tue, 12 May 1998 Kjeld.F.Christensen@dxd.ericsson.se wrote:

> > If I do a strlen on a NULL pointer I get a coredump.
> > I have the same code running on a few *other* Unix machines with
> > exhibiting this behaviour.
> > OK, so I could tidy it up, but I wondered is this an oversight or the
> > correct behaviour?
> 
> I just observed the same problem.
> The differnce lies in where the core is located. A UNIX core starts from
> ZERO, and thus you are allowed to read from a NULL pointer on UNIX, as
> You read from your code.
> 
> On NT your process may lie anywhere, but never in ZERO, Thus you are not
> permitted to read from adress NULL. (You are not allowed to snoop around
> in the interrupt vetors!)
> 
> So this is the explanation!
>   
>   Kjeld


This is quite wrong for most unixes. 

cat test.c
main()
{
  char *c = (char *) 0;
  char d;

  d = *c;
}

bash$ cc test.c
bash$ ./a.out
Segmentation fault (core dumped)
on FreeBSD, linux, solaris, sunos ...

Anyway, check the kernel source, and see the part where they make page
0 unreadable and unwriteable. Stupid exceptions: some SvR4 
implementations, and of course stupid old AIX.

ron
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]