<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128627>128627</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
libc++ hardening mode doesn't detect
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
thesamesam
</td>
</tr>
</table>
<pre>
Noticed when reading https://jacko.io/smart_pointers.html.
libc++'s hardening mode doesn't detect the following, even with `-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG`, while `-D_GLIBCXX_DEBUG` (though not `-D_GLIBCXX_ASSERTIONS` does):
```c++
#include <vector>
int main() {
std::vector<int> my_vector = {1, 2, 3};
for (auto element : my_vector) {
if (element == 2) {
my_vector.push_back(4);
/* The next loop iteration reads a dangling pointer. */
}
}
}
```
godbolt: https://godbolt.org/z/jKaYPY3vb
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEU12PozYU_TWXF2sQuYYADzyQkExHbbOjna20-xQZuAHvGDvCJun011cmyaQzVVXL2BI-59wPnSuslZ0mKiBZQVIFYnK9GQvXkxWD_4LatG_FzjjZUMvOPWk2kmil7ljv3NECLwG3gNufonk1oTSAWzuI0e2PRmpHow17N6gQohKiUsm6AVzNO7WsF2NL2msNpiXWGrIaMHWsJUeNY64ndjBKmbPUHeCa0Yk0O0vXM1hGD9X-t6fV-vl5_0v5tdrsnnaP-9-_VBvg__GwrzarPx5hGXmpcy8VXWUePfz79_d3Bpi53kxdz7Rxn0Dly8vm67enL7sXj_Q5A-a-DXOFXn3etzqjEpBL3aipJQZ8faLGmRH45oKX2rFBSA2YAeYMUs9gjDHrWi_KyxthLbUDvmHD2_7yiwGvPGHhy0F_cEgr4DeFg4dgJiZnGCkaSDsGvLwLfAzolzx4xh1c-RD4b5xf7zLhcbL9vhbNK2AWz834jJ0tUrJvPTFNfzqmjDky6WgUTpqLoywTrBW6U94OV--EDHC2113NVxiV1-t63lp-6Whn2too5yv96NDrQ2jGDnD7l_fsr-LH8w9-qoO24G3OcxFQsUjjKE7yjOdBX9R5dOBZnlCexnncprRIkkOyqNM8aWKOGMgCI0wixCRKIp7kIUV1w_nykCyyuI5bDnFEg5AqVOo0-NiBtHaiYoHZEtNAiZqUnccP8Z_jgX4cx8KzHuqpsxBHSlpn7zpOOkXFnfN_4xRMoyo-tUS6fqrDxgyAWy98vR6Oo_lJjQPcztlawO014VOBfwcAAP__o889jw">