<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60159>60159</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Does CodeChecker have support for STL in C++
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
VenoVeno
</td>
</tr>
</table>
<pre>
**Describe the bug**
CodeChecker failed to detect bugs in STL's like List, Map.
**CodeChecker version**
16.0.0
**To Reproduce**
CodeChecker check --print-steps --build "make all" --output Report --clean --enable alpha.security.taint.TaintPropagation --ctu --enable profile:SENSITIVE
**Expected behaviour**
Taint Analysis should capture List
**Desktop (please complete the following information)**
- OS: Linux
- Version: Ubuntu 20.04.5 LTS
**Sample Code**
```
#include <list>
{
size_t data;
list<size_t> dataList;
/* Initialize data */
data = 0;
{
char inputBuffer[CHAR_ARRAY_SIZE] = "";
/* POTENTIAL FLAW: Read data from the console using fgets() */
if (fgets(inputBuffer, CHAR_ARRAY_SIZE, stdin) != NULL)
{
/* Convert to unsigned int */
data = strtoul(inputBuffer, NULL, 0);
}
else
{
printLine("fgets() failed.");
}
}
/* Put data in a list */
dataList.push_back(data);
// dataList.push_back(data);
// dataList.push_back(data);
badSink(dataList);
}
void badSink(list<size_t> dataList)
{
/* copy data out of dataList */
size_t data = dataList.back();
{
char * myString;
/* POTENTIAL FLAW: No MAXIMUM limitation for memory allocation, but ensure data is large enough
* for the strcpy() function to not cause a buffer overflow */
/* INCIDENTAL FLAW: The source could cause a type overrun in data or in the memory allocation */
if (data > strlen(HELLO_STRING))
{
myString = (char *)malloc(data*sizeof(char));
if (myString == NULL) {exit(-1);}
/* Copy a small string into myString */
strcpy(myString, HELLO_STRING);
printLine(myString);
free(myString);
}
else
{
printLine("Input is less than the length of the source string");
}
}
}
```
> Comment Extended:
_Originally posted by @bruntib in https://github.com/Ericsson/codechecker/issues/3798#issuecomment-1397281431_
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vktz4rwS_TVi02XKyDwXLBwD96OKJFOBmfvYpGS7DboRkkuPTJhff0uyASckM3UXn4uYYLe6T3efPhIzhu8l4pyM7sho0WPOHpSe_0Cp_F8vV-VpTmhKaLpAU2ieI9gDQu72zVMSL0icZqrE7IDFC2qoGBdYglVQosXCelsDXMJ2tyF0YkDwF4QNN5bQDO5Z3W98tPfgtevvFbXhSnbDDcb9uB_fLtspeMJaq9IV-BW8wn9DFNWaSxsZi7WBKModFyUQSo_sBYEJQSiFKFLO1s56p0pbiKJCIJMQRShZLrxdfWB9g4XT3J76lnFp-zt__6ZVzfbMcuXNC-uui2qtKi6QJOl2-bBd79Y_lreZLN9qLCyWkOOBvXLldDefEAJSycTJcAPmoJwooWC1dbopLdy6XKB5saoGQqe1QGYQCnWsBdqmo5USQv3kcg9cVkofA3ZCZ924EMHjliQpbLh0b5dnP9oOJSl8z520Dmjcj4f9EWx221sgW-bDgm9K1zkZx-2ntU24LIQrEUiSCU-X5FyoyV0bGwAM_4XPFkpmGUk6z5sVWfOaJMtgEVjXtSJ0RWgKa8ktZ4L_wmAGAdfqatY8TBYQv1_dBeKv4sA0cFk7e-eqCjUZ3WV_pU_P6dNT-u_n7fo_SzJaBEeEUv-5eGuBfHvcLR9263QDq036T1_RJ2RlE7_S6hhaVShplEBwxrer2qM1hE4Jnd3g9hevfMvPVl1wNIOP6GgGxpZcNs4GHunD983G8-Cd02vmLfBMyVfU1o-9k0FTSvAk_QzRu4oaq61y4hZaEzeD2AdP7j7GX7x_gMLgVxDDqG-4xFAl2i1YI1b90I0_RHn_o22Xa5jn5Y0Fyn1KHU-7fu3M4TlnxQuh08DWDwGDy9XfZJ-zcsvl-VUjvtfXl9Sa-6viZWfF15N0ZsUNGwpVn5rCKGdBVZclN-XpjG-gwyWdNpN3WXw-bz7g8bS1msv9bQu_mqsHBffpv9b33-9B8CO3jVZXSsMRj0qf_CagilYFM8idBZTG62vTcAOC6T0CSuX2h0v6aXDhp9RYXdSnM8-cLEIAq0AqCwVzBoFBHugO6hV1JdTPT8flrFEP2XqxfNh1ctj5MMrpwmtCswU0bu2pxuBUO-m52bTCS1OAdpPhb4Sj7czS5yNQEjr9a7nZPD5vd0_rh3-EDWL2VXv8de5Mq3rTc8sInR0DgAtdU88FVbU2redLPxs0XW8dcfKh8Y1bQqfRoF32USE6pcw8PRkYD8Dn1ex6VnXAfiFbl6ZeCEcz-FiQ5DPhuS641Rl_VRr_ZHZN6Xdq17k-CN_aC2xgLhoD9sAaNgiUe3vwU2qvfDItiv9DF6__fNjJm3uyhEwdjygtLN8syhJLkqRdk-dHzfdcMiFOUCsTjj8nIMM4105annv6HqytjV8X1G_P7cHl_UIdCV0tNS-M8eO6KlSJRXPgI3TFjXFoCF0lk9nUnyv876LBEg2S2YROB8Nk8Nwr50k5S2ash_PBeDIczOhoHPcO83E1GBR5PMmLJJmw8aTI8wTHSU6nk3E-Gox7fE5jmsQDGscjOqNxfzoaJqPpKJkmwwrLYUyGMR4ZF30hXo99pfe9AGI-jgejWU-wHIU5n8H13BtF_thMhrFXX3NdZrkVOF8oNNA91R7YK4JxdTinegXa7ja-XBmhd4Te9ZwW89-Uzrtvv6Jaq_9iYbt1Cyj_FwAA__99dH8D">