This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
Re: strlen on a NULL
- To: Kjeld dot F dot Christensen at dxd dot ericsson dot se
- Subject: Re: strlen on a NULL
- From: "Ron G. Minnich" <rminnich at sarnoff dot com>
- Date: Wed, 13 May 1998 09:32:27 -0400 (EDT)
- cc: ian at kiwiplan dot co dot nz, gnu-win32 at cygnus dot com
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".