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>