Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Sat, 23 Jan 2016 22:30:32 +0100
From: Hauke Mehrtens <hauke@...ke-m.de>
To: musl@...ts.openwall.com
Subject: Re: [PATCH] Add format attribute to some function declarations

On 01/23/2016 10:05 PM, Alexander Monakov wrote:
> On Sat, 23 Jan 2016, Hauke Mehrtens wrote:
> 
>> GCC and Clang are able to check the format arguments given to a
>> function and warn the user if there is a error in the format arguments
>> or if there is a potential uncontrolled format string security problem
>> in the code. GCC does this automatically for some functions like
>> printf(), but it is also possible to annotate other functions in a way
>> that it will check them too. This feature is used by glibc for many
>> functions. This patch adds the attribute to the some functions of musl
>> expect for these functions where gcc automatically adds it.
> 
> Here's how a similar change was done the last time around:
> http://git.musl-libc.org/cgit/musl/commit/?id=ccc71e0ea881b7f6594ed95afd706442829c39fc

Ok, I will do it in a similar way.

Is there a central file where I can put the "#if __GNUC__ >= 3" or
should I put it into all 4 files?

> Note that that approach avoids repeating #ifdef __GNUC__ ...
> 
> How did you choose which functions from stdio.h to annotate?  Are you saying
> that gcc is unaware of snprintf while it recognizes sprintf?

snprintf is only check when in C99 mode. This is from the GCC documentation:

> The compiler always (unless -ffreestanding or -fno-builtin is used)
> checks formats for the standard library functions printf, fprintf,
> sprintf, scanf, fscanf, sscanf, strftime, vprintf, vfprintf and
> vsprintf whenever such warnings are requested (using -Wformat), so
> there is no need to modify the header file stdio.h. In C99 mode, the
> functions snprintf, vsnprintf, vscanf, vfscanf and vsscanf are also
> checked. Except in strictly conforming C standard modes, the X/Open
> function strfmon is also checked as are printf_unlocked and
> fprintf_unlocked. See Options Controlling C Dialect.

glibc did it the same way.

Hauke

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.