Return to BSD News archive
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!msunews!uchinews!ncar!gatech!news.mathworks.com!uhog.mit.edu!bloom-beacon.mit.edu!boulder!news.coop.net!village.org!not-for-mail
From: imp@village.org (Warner Losh)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: Major strcmp bug under BSD 2.0?
Date: 30 May 1995 15:08:53 -0600
Organization: The Village
Lines: 34
Message-ID: <3qg1h5$2gl@rover.village.org>
References: <3qfn52$188j@troy.la.locus.com>
NNTP-Posting-Host: rover.village.org
In article <3qfn52$188j@troy.la.locus.com>, Sassan Behzadi
<sassan@locus.com> wrote:
>Am I imagining things or is there a bug in BSD 2.0's strcmp() function?
>If either of the string parameters is NULL the program core dumps.
>Isn't this a major bug? (Making the OS pretty much useless). Is there
>a simple fix for this ?
It is a bug, in *YOUR* program. Dereferencing a NULL pointer is not
allowed, and strcmp is not required by the standard to do what you
expect in this case.
However, that said, you can do something like:
#define strcmp(a,b) strcmp( (a) ? (a) : "", (b) ? (b) : "");
But watch out for statements with side effects. Alternatively, you
could also do something like:
#define strcmp(a,b) Strcmp((a),(b))
and then define Strcmp to be something like:
int Strcmp( const char *a, const char *b )
{
return (strcmp( (a) ? (a) : "", (b) ? (b) : ""));
}
The bottom line: Fix your code.
Warner
--
Warner Losh "VMS Forever" home: imp@village.org
Cyberspace Development, Inc work: imp@marketplace.com
Makers of TIA, The Internet Adapter. http://marketplace.com/