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

    <tr>
        <th>Summary</th>
        <td>
            [ASAN] `new-delete-type-mismatch` with allocation bigger than the object
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            compiler-rt:asan,
            false-positive
      </td>
    </tr>

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

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

<pre>
    This has been reduced from code in https://github.com/mamedev/mame/blob/master/src/osd/modules/file/posixfile.cpp.

```cpp
#include <memory>

struct entry
{
    const char * name;
};

static std::unique_ptr<entry> osd_stat()
{
    entry *result = reinterpret_cast<entry *>(::operator new(sizeof(*result) + 1));

    return std::unique_ptr<entry>(result);
}

int main()
{
    auto f = osd_stat();
}
```
https://godbolt.org/z/G8Kfz945c

```
==1==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x502000000010 in thread T0:
 object passed to delete has wrong type:
  size of the allocated type:   9 bytes;
  size of the deallocated type: 8 bytes.
    #0 0x5b65dbf6a542 in operator delete(void*, unsigned long) /root/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:155:3
    #1 0x5b65dbf6c19b in std::default_delete<entry>::operator()(entry*) const /opt/compiler-explorer/gcc-14.2.0/lib/gcc/x86_64-linux-gnu/14.2.0/../../../../include/c++/14.2.0/bits/unique_ptr.h:93:2
 #2 0x5b65dbf6bebf in std::unique_ptr<entry, std::default_delete<entry>>::~unique_ptr() /opt/compiler-explorer/gcc-14.2.0/lib/gcc/x86_64-linux-gnu/14.2.0/../../../../include/c++/14.2.0/bits/unique_ptr.h:398:4
 #3 0x5b65dbf6bda3 in main /app/example.cpp:18:1
    #4 0x7750ada29d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: 490fef8403240c91833978d494d39e537409b92e)
    #5 0x7750ada29e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f) (BuildId: 490fef8403240c91833978d494d39e537409b92e)
    #6 0x5b65dbe8b354 in _start (/app/output.s+0x2c354)

0x502000000010 is located 0 bytes inside of 9-byte region [0x502000000010,0x502000000019)
allocated by thread T0 here:
    #0 0x5b65dbf698dd in operator new(unsigned long) /root/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:86:3
    #1 0x5b65dbf6be20 in osd_stat() /app/example.cpp:10:47
    #2 0x5b65dbf6bd9a in main /app/example.cpp:17:14
    #3 0x7750ada29d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: 490fef8403240c91833978d494d39e537409b92e)

SUMMARY: AddressSanitizer: new-delete-type-mismatch /app/example.cpp:18:1 in main
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMVk2Pq7gS_TXOxgoyZSCwyIJ0X56enu4bqe-dxawiGxfBI4IZ23SnezG_fWSg89F9P-ZKM5qJUEJMuerUoeq4hHP60CNuSboj6f1KjL41dttoi0_iEVfSqOft51Y72gpHJWJPLaqxRkUba460Ngqp7mnr_eAILwlUBKqD9u0oo9ocCVRHcUSFj8sdgUp2Rk7_nEdLoHK2JlAZp8KiUWOHjkDV6C4YD8bpU7iP6mGICCvDlbH5qoch_AWu-7obFVLC7454NPaZ8A-zrfN2rD3F3tvnsLLZEVZSSmlteudp3QpLCZS0D9j4bjK5X27CbuF1TZ1XITdejr3-bcT94C3hd7NP_oEap_bBkkBOoLiJMtmEABbd2HlK-D21qHuPdrDo97Vw_tVVMAu4IZ-DmQGt8MbSHp8I5E6_oGmmGIs3AgUlsKNxiArFGXUIbNGPtv8OcgL52dMl-cmH7j09Ct1_IScxekObKZU3mV-7eH1HhJVvisMoaTofGXsgUL0QqP6T_695KZK0fvN6wz2_J_w-nn8-PDz89EB4SUulLDr3SfTa6xe0Ya3Hp7XCDj2u_fOA66N2R-HrlpqeslPKgM2fmIV69a1FoehnFmCxkhr5K9aeDsI5VNQbOruaqv7Jmv5Ag9PFmIZXQU1DfYtUdJ2phQ-7ZgtKaUHls0c383FrrvD9hnw2jxZ-CXAWIMssVbLJRJpAgHwuhxkagfzRaBVqBu7o2E99rGhn-sNcF5U1xhOouu7xuB6sCQkSqGpzHHSHdm2nhzq0onCiX372PT7t5wih4wgv4zQlvOQXcPEVuDouZAB3rjOFjRg7v7i4rrWbml4KBvL5cUiiWFoyaMFwgxRPQ2fspBWHul7HSQQRO4M_1EE-Tnm2z5J1p_vxtD70I4HqbBdF778WxQhhCOym67JBah8k6NIzUUt4WXDCSwg8EOBwRYJE2dyQ8IVmg7s_xdFC0-9XHiam_r2s8CLIVbLQwq9pUYIHWoKMBPxiGAhUeBLHoTsXV9gcX2oroey02aRMKAGFyhs6pb_k9IVsOi3ryJkoI7Bjp2nLzFa-G3Wn_hsYp0nBGmzyhHFIWF3EOefFJldJkSheYMo3CStkATgL3YIkvUaCfHrB-32IFxTP-v2S1g_BQ_5XwcvORGMueZpM8CZgC6aZbTP6YfSRm-PXPE0WNWflW1F09FWX2KxHVPdOq0m5inVYoRYP2vSUpLvbzQTubhaKOchF6eTzRXFpi_aspO_UrsiVulG7-fD7G_Utz74ubxJhOi5uz7mvFnM4TZLNxdWNSKhCfLcbNuEruTjg_3w7EFZ--vnjx_Lhlx8-eb_Z869cXB_4K7XlquCFWOE23iQxKzhnm1W75VmdFU3GUy6zIuc8S2UqmZQJl3kuN7DSW2CQMs6SmLM42UQ5yLSOoUGQPI15TBKGR6G7KJRLmD1W2rkRtzEUGxavOiGxc9MUDHBdQryciwcI3BGARnQO12Eo9foRw3J6v7LbqQbleHAkYZ123l3CeO27abwuP5X_J-k9JRn7GmMkY_RJ-_Z1qAjNJvXhgJb6VvTTADFPKqvRdttvDN0h_PvemFIOGr5k_biFPwIAAP__1p6UVw">