[cfe-dev] RFC: default to -Werror=format-security
Sean Silva via cfe-dev
cfe-dev at lists.llvm.org
Wed Feb 17 13:03:06 PST 2016
On Wed, Feb 17, 2016 at 5:27 AM, Aaron Ballman via cfe-dev <
cfe-dev at lists.llvm.org> wrote:
> On Wed, Feb 17, 2016 at 3:48 AM, David Chisnall
> <David.Chisnall at cl.cam.ac.uk> wrote:
> > On 16 Feb 2016, at 21:56, Aaron Ballman via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
> >>
> >> Sorry, but printf(fmt); is *always* a true positive in my book. Same
> >> with failing to return from all code paths. (etc)
> >
> > You are wrong. The most common reason for printf(fmt) to appear is that
> fmt is the result of doing a lookup of the locale-aware version of some
> constant string. In this case, the contents of fmt is entirely under the
> control of whoever shipped the application, and will have been checked for
> format string vulnerabilities by the localisation tools (at least, assuming
> that the original that is being translated are free from vulnerabilities).
> If you are not doing any caching in the application, then you can mark the
> translation function with the attribute that indicates that its input and
> output have the same format string compatibility. If you are caching, then
> there is no easy way of silencing this warning.
> >
> > Making this an error will cause valid and correct code to fail to
> compile and will result in people simply disabling the warning, rather than
> checking it.
>
> If the expected string does not have any format specifiers, then
> printf("%s", fmt) is definitely the correct way to write that because
> the assumption "entirely under the control of whoever shipped the
> application" is a poor one. If it does have format specifiers, I agree
> that we should not err, but I don't believe that was on the table.
>
I think David is talking about a situation where it is e.g.
printf(translate("Please enter a number from %d-%d\n"), lo, hi);
-- Sean Silva
>
> ~Aaron
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160217/cb00119e/attachment.html>
More information about the cfe-dev
mailing list