delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1998/05/13/07:34:15

From: raf AT comdyn DOT com DOT au (raf)
Subject: Re: strlen on a NULL
13 May 1998 07:34:15 -0700 :
Message-ID: <199805130145.LAA18828.cygnus.gnu-win32@mali.comdyn.com.au>
To: gnu-win32 AT cygnus DOT com

>> 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!

nonsense. if strlen() doesn't crash when given a null pointer, the only
reason is that the implementation must contain a test for the null pointer.
this is atypical. strlen(NULL) normally crashes on unix. unix core files
may start at address zero, but zero is an illegal address. this is deliberate.
using null pointers is so common an error in c programming, that the null
address was deemed to always be invalid. remember that c and unix were
invented together.


raf


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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019