<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">