<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/58900>58900</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            False positive with -Wformat-nonliteral  when using brace initialization
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            bug,
            clang:frontend,
            clang:diagnostics,
            false-positive
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          carlosgalvezp
      </td>
    </tr>
</table>

<pre>
    Hi,

We find that -Wformat-nonliteral does not recognize string literals if they are initialized with brace initialization. Example:

```cpp
#include <cstdio>

int main()
{
    constexpr const char* fmt = "%d";  // OK
    char data[100];
    sprintf(data, fmt, 123);  

    constexpr const char* fmt2{"%d"};  // NOK
    sprintf(data, fmt2, 123);  
}
```

Repro: https://godbolt.org/z/Yn14aqzvb
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyFUsuO2yAU_Rq8uUqE8XvhRR4TVarUSt2MusQG21QEXMCZmXx9r50ZxdNGqoV53cu5h8NprHirvyjCDoQeCd3d-mcJnTICwsADbJ476848bIw1WgXpuAZhpQdjAzjZ2t6oqwQfnDI9vGd4UB0el2_AnQRlVFBcY5qAFxUGaBxvV9s8KGu28PTKz6OWJNmtyZCc3lo7ju87LFGm1ZOQQJJD64NQliRP60PKBDhzZQgrCaveI8X-NgH8Wmt8kK-ju82gHbgjbAfdOSDoEQhjhGViHpI94PKEDb5_XSHgCRA8cJLtY0pJdsTMe9iPqEfokMCSww4z9DzELJkpLagrxv8hxWb2d07FcU3r25rXw8LscWWE-azxmtEPOTrUdQdDCKOfX2Wp1lvRWB221vW4uuL_08Qp_329NJGs4zwvaVxkRRGJOhFVUvEoqKBlfUJXSBitx0e_yJsPHnkLXgZpYPKzmx75JJqcrv-ihFhTs23tGRdaXz6GDV7gl2xR9pPyfpIeJ1lZURoNNaUsKXlH0yQvyrLqSpbyKk27tChpmeVppHkjta_xdVHwZuoX9Q-zMVrNTY_FO2dNkEb8GxGK98b6oFp_D3azAJsPAeb97BipmlHG4phWcRmzrNimeRE3tEop7USaVglJqUQn6-18oVn0yNXL3ZCSx6BWPvh7kHuveiPlwhvx-RQG6-qWO219z_VFXsdoEaNelPgDeKsyiQ">