<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/134901>134901</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] Check request: bugprone-memcpy-after-network-to-host
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
denzor200
</td>
</tr>
</table>
<pre>
Needs a check that will find a strange usage of a "network to host" function(like `ntohl` and `ntohs`) before it's result was copied to a raw block of memory.
This check will suggest to change that functions to "host to network" versions because in the most cases this is what the programmers really want.
EXAMPLE:
```
void send(std::uint32_t cook_hdr, std::uint16_t seqnum) {
std::byte packet[6];
cook_hdr = ntohl(cook_hdr); // BAD - looks strange, you mean 'htonl' ??
std::memcpy(&packet[0], &cook_hdr, sizeof(cook_hdr));
seqnum = ntohs(seqnum); // BAD - looks strange, you mean 'htons' ??
std::memcpy(&packet[4], &seqnum, sizeof(seqnum));
send_raw(packet, sizeof(packet));
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUlM-TqjgQx_-a9tKlFRsBOXDA8Xna3drDHvY2FUgDWUPiS8JYvr9-K4yOM-82VqokpH98vt2kZQh6sMw15AfIjys5x9H5WrH95TwJsWqdutUgmr-YVUCJ3cjdGeMoI161Mdhrq1BiiF7agXEOcmB0PUoEIsvx6vwZo8PRhQhE2M-2i9pZoL3RZ0YohI1uNFAIlFY99gEKAVRhy73zjDoClQE9h9lEvMqAnbtoVimyRC-v2BrXnVPiiSfnbxsQzT-jDnfeBTXMw8AhJp9uXGgXGQ-ikA6AKJGmxzt8gn5jHxaLljs5B0ZtMY6MUzLtZOCAMSXTAa8pZDq7eDd4OU3sE7c05oZXaWMCA9H8-Lf58-8_fkCWNknr-xLNm9MKA1sFtA9RJYOsmbWNGb1G7Jw7v47KA73gl9Nt8Rox8E87T6lsUB5ANIj4tGpvkfEiuzNHyA8F5EfIHkaPsAjZEd_bQftnrgqyAy4_oBPQCQ_NEddonDuHR-cT0c3NOLG0CFSO0VkDVCJkp7RE80SZeOouN6A9UPFBJBIRvSBQ8UWl_sWu_w1nIXoIXER_kIdUt0cdPri_zx6-w757sj9yfyJ_4nzlturVyyvQ_h7ns8_j1dMHyuNvn8pK1ZmqskquuN6Wu902K7dbsRrrbs_Ut2VVtiQLUm1VVlneSyXasuy7nla6JkG52In9dp9tc7Fp-65SpciLoqK8kwp2giepzcaYt2nj_LDSIcxcb7NdJbYrI1s2YZkZRJ2RdlhHrW5AlGaIr5PXup2HADthdIjhGSfqaJZp88ktP-LLck09_5w5RMgabOfh4p3l9XvB17KP7Nf3O7mObp2u6Wr2ph5jvITUnKW_g47j3G46NwGdUtb73_ri3X_cRaDTIiUAne5q3mr6PwAA__-ybJHR">