* Alan Coopersmith:

> On 7/26/24 12:46, Solar Designer wrote:
>> Unfortunately, *asprintf() are not that easy to use safely:
>> "For asprintf(), if memory allocation was not possible, or if some
>> other
>> error occurs, the function shall return a negative value, and the
>> contents of the location referenced by ptr are undefined, but shall not
>> refer to allocated memory."
> [...]
>> As I recall, on *BSD's *asprintf() also reset the pointer to NULL.  On
>> upstream glibc, it does not.  We failed to get this change past Ulrich
>> back then:
>> https://sourceware.org/legacy-ml/libc-alpha/2001-12/msg00045.html
>
> Yes, this came up in the discussion to add asprintf() to POSIX in
> https://austingroupbugs.net/view.php?id=1496 :
>
>> Of the above listed implementations, all but GNU libc document that they will
>> set *ptr to NULL on error, while GNU libc explicitly states that you cannot
>> rely on it to do so (and looking at its code, sometimes it does, sometimes
>> it doesn't).
>
> and so the standard was written to allow both ways to be conformant.
>
> If GNU libc was willing to change that, perhaps the next version of the
> standard could as well.

I submitted a glibc patch:

  [PATCH] libio: asprintf should write NULL upon failure
  
<https://inbox.sourceware.org/libc-alpha/87zfq0r8aj....@oldenburg.str.redhat.com/>

Thanks,
Florian

Reply via email to