Re: strdup(NULL) supposed to create SIGSEGV?

On Tue, 22 Apr 2008 22:40:21 -0700
"Garrett Cooper" <yanefbsd@xxxxxxxxx> 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

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 Meyer <mwm@xxxxxxxxx>
Independent Network/Unix/Perforce consultant, email for more information.
freebsd-hackers@xxxxxxxxxxx mailing list
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"