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

    <tr>
        <th>Summary</th>
        <td>
            Possible false positive "Potential leak of memory" on C union
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    I'm running into a memory leak report when analyzing the following C code:

    #include <stdlib.h>
 #include <stdio.h>
    #include <string.h>

    struct s {
 union {
            const char * const str;
        };
 };

    int main() {
        char * str = calloc(5, sizeof(char));
        strcpy(str, "test");
    
        struct s foo = {
            .str = str
        };
    
        struct s * fah = calloc(1, sizeof(struct s));
        memcpy(fah, &foo, sizeof(struct s));
    
        free((void *) fah->str);
        free(fah);
 }

And the analyzer output:

     <source>:19:22: warning: Potential leak of memory pointed to by 'str' [unix.Malloc]
         struct s * fah = calloc(1, sizeof(struct s));

I think this is a false positive. This code is also running here: [https://godbolt.org/z/bz5vzPa8h](https://godbolt.org/z/bz5vzPa8h)

`clang -v` output:

    Apple clang version 14.0.0 (clang-1400.0.29.202)
 Target: x86_64-apple-darwin21.6.0
    Thread model: posix
 InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Please let me know if you need more information, or have any suggestions. Thanks!
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVUGP6jgM_jXhYlG1LpT2wIEHD-kdVprDHPa2SlOXZieNqySFYX79KoV5MMyM9A6LUCHxF_uz_TmV3uuDJVqL5Q-x3M3kGDp2a9-Rq0dnaVZzc17_ErjqwY3WansAbQODhJ56dmcwJF_A0cAuwKkjC9JKc36LwNARtGwMn-JqC4obEvlGpDuRXp8AAAJzbZUZGwKRb31ojK6TTuQ_r5BPds335i88OG0Pd5Ab0Ac3qgAexOrHdXe0mu3d-u6j2PoAqpMOBG6uSx-cyB_AYrW77d0vbjBtA_RSW4GlwOpzvN9RfHAg8h0oaQwrgeVS4Ba8fiNuBZYRJ7CK30cWPjg1nAWWkSJuQSAG8kEgPqI_nbsUpWWeQn9ZjOSdWPT-ffbfe4_JtbL7mFz2Ibl37DcJ9tRfEmxld0mwaJn_1MNHX60jmnpRHlk3kVxsSyu7uch_TgX8HP96ZopefWz4Xbc3tpmUf5kDcsBjGMbwhfAnsfLoFEWp5pusEvkGUeQbOEkXZy3-feJANmhpLqPG7fvkDaxtoAYCQ30GgauJ9grE8sdo9Wvy16XIy91DM_-HjlyevyB02r7EpwftQUIrjScY2Ougj5TAc7TEsZ_MxvPvS6QjF--CSLYLYfCxPLgXuD9wU7MJCbuDwP2bwH39tjy-Pcmyi6lg-edwrO7ZiiJVRtoDzI-iSL_vymYYDMEFeiTn4_WQLZI0SSHOX9yfZ4s0TdIEqwRT_B0HnqU7UPQJr2XxT7GYy-hr3kh30hazpEjSW5znzpFsoOeGTDwSq_Z6Nf-yPkhjqNlpN1UJ95GWVjJotl7g_u9Y1UQOg8D9lm2USNze0ZEMD-QE7p-ZjeqkvuF31MrRhORVhXebwP3oI7rW9r4ST4akJzAUoCd4sXwC3cKZR7BEkbUj0LZl10-UomjYQSePUfhn8OPhQH4iG1Ug7YsXmM2add5UeSVntM6K1WKZFas8nXXrvM4QSVWLOsvaqlYrbEtVLVVTl42qymam15hinmaYY55jliapKlWbosywKtKqqMQipV5qkxhz7KMaZtr7kdZFiotiZmRNxk8vOURLJ5iM8WZc7mZuHc_M6_HgxSI12gd_8xJ0MLR-Yu91behB4PGK_W48BSKwhe3lBTMbnVk_KFeHbqwTxb3AfYx3_ZkPjv8lFQTuJ5axe1MW_wUAAP__BINAAg">