<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 17 February 2016 at 13:27, Aaron Ballman via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Feb 17, 2016 at 3:48 AM, David Chisnall<br>
<<a href="mailto:David.Chisnall@cl.cam.ac.uk">David.Chisnall@cl.cam.ac.uk</a>> wrote:<br>
> On 16 Feb 2016, at 21:56, Aaron Ballman via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br>
>><br>
>> Sorry, but printf(fmt); is *always* a true positive in my book. Same<br>
>> with failing to return from all code paths. (etc)<br>
><br>
> 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.<br>
><br>
> 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.<br>
<br>
</span>If the expected string does not have any format specifiers, then<br>
printf("%s", fmt) is definitely the correct way to write that because<br>
the assumption "entirely under the control of whoever shipped the<br>
application" is a poor one. If it does have format specifiers, I agree<br>
that we should not err, but I don't believe that was on the table.<br></blockquote><div><br></div><div>Or use puts, if applicable.<br><br>--<br></div><div>Mats <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
~Aaron<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</div></div></blockquote></div><br></div></div>