[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: problem with inline functions in gsweb and clang
From: |
Wolfgang Lux |
Subject: |
Re: problem with inline functions in gsweb and clang |
Date: |
Tue, 28 May 2013 12:13:25 +0200 |
David Chisnall wrote:
> On 27 May 2013, at 18:18, Ivan Vučica <ivucica@gmail.com> wrote:
>
>> Somewhat off topic: I really like the following error; it's extremely
>> professional and mature. Where is it coming from?
>>
>> /usr/local/lib/libgcrypt.so.18.0: warning: stpcpy() is dangerous GNU crap;
>> don't use it
>
> It's a linker error that is triggered by the presence of an attribute on a
> function. The text is a reference to Ulrich Drepper's refusal to accept
> patches to implement the strl* functions in glibc because they were
> 'inefficient BSD crap'.
>
> It is 'dangerous', because it will NULL-terminate the string in some cases,
> but not others. This means that you must always check the lengths of both
> strings before calling it, at which point you may as well use memcpy, which
> will be faster.
Don't get things mixed up. :-)
stpcpy and strcpy are dangerous because these functions might overrun the
buffer you are writing to. It is strpncpy and strncpy, which may fail to write
a '\0' to the end of the string.
> Note, however, that the GNU man page explicitly claims not to have invented
> this function, and it is now part of POSIX2008 (Austin has a habit of
> standardising bad ideas if two or more libcs have implemented them), so the
> 'GNU' in the warning is misleading.
Wolfgang