This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: asprintf() issue


On 13/05/15 17:14, Joseph Myers wrote:
> On Wed, 13 May 2015, Archie Cobbs wrote:
>> On Tue, May 12, 2015 at 10:11 AM, Florian Weimer <fweimer@redhat.com> wrote:
>> diff --git a/manual/stdio.texi b/manual/stdio.texi
>> index e407170..bf7cffe 100644
>> --- a/manual/stdio.texi
>> +++ b/manual/stdio.texi
>> @@ -2551,6 +2551,8 @@ The return value is the number of characters
>> allocated for the buffer, or
>>  less than zero if an error occurred.  Usually this means that the buffer
>>  could not be allocated.
>>
>> +If an error occurs, the contents of *@var{ptr} are not modified.
> 
> It's not clear to me that we want to guarantee this as an API.  (Though 
> the existence of code relying on it would indicate that if we changed it, 
> we should also change the symbol version and keep a version that doesn't 
> modify it at the old symbol version.  And as I understand that bug report, 
> the code in question would work just as well if glibc changed to set it to 
> NULL, which was previously requested in 
> <https://sourceware.org/ml/libc-alpha/2001-12/msg00021.html>.  I don't see 
> any good reason to do something other than leaving it unchanged or setting 
> it to NULL, however.)
> 

if all bsd set *ptr to 0 on error then glibc should not
guarantee incompatible behaviour.

fwiw musl sets *ptr to 0 on ENOMEM, but happens to leave
it unmodified on other sprintf errors (eg. EILSEQ).

> Does anyone know of implementations that do something other than leaving 
> the value unchanged or setting it to NULL?  The external specifications in 
> question are LSB and TR 24731-2:2010 (which defers to LSB), and they seem 
> to be silent on this issue.
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]