Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Apr 2008 02:50:48 -0400
From:      Mike Meyer <mwm-keyword-freebsdhackers2.e313df@mired.org>
To:        "Garrett Cooper" <yanefbsd@gmail.com>
Cc:        hackers@freebsd.org
Subject:   Re: strdup(NULL) supposed to create SIGSEGV?
Message-ID:  <20080423025048.6b51a580@bhuda.mired.org>
In-Reply-To: <7d6fde3d0804222240j6b42b77yd86d8accb5a959fa@mail.gmail.com>
References:  <7d6fde3d0804222240j6b42b77yd86d8accb5a959fa@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 22 Apr 2008 22:40:21 -0700
"Garrett Cooper" <yanefbsd@gmail.com> wrote:

> Hi all,
>      I made an oops in a program, which uncovered "feature" in strdup(2)
> that I wasn't aware of before. So I was wondering, is strdup(pointer = NULL)
> supposed to segfault should this just return NULL and set errno?

Yes, it's supposed to segfault. Check out what, say, strcpy does if
you ask it to copy a NULL pointer. And this is an improvement from the
bad old days, when they would happily walk through memory starting at
0.....

Besides, errno is used to signal errors from system calls. strdup
isn't a system call, it's a library function (says so at the top of
the man page).

>      Good news is that Linux does the same thing (yay?), so at least FreeBSD
> isn't alone..

Do you have examples of systems where strdup doesn't behave this way?

   <mike
-- 
Mike Meyer <mwm@mired.org>		http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080423025048.6b51a580>