put_command_and_length(&state->messages[0], CA_APP_INFO, length);
 
        // Copy application_type, application_manufacturer and manufacturer_code
-       memcpy(&state->messages[4], &state->messages[7], 5);
+       memmove(&state->messages[4], &state->messages[7], 5);
 
        // Set string length and copy string
        state->messages[9] = str_length;
-       memcpy(&state->messages[10], &state->messages[12], str_length);
+       memmove(&state->messages[10], &state->messages[12], str_length);
 
        return 0;
 }
 
                   (the max size of the VBI data is 36 * 43 + 4 bytes).
                   So in this case we use the magic number 'ITV0'. */
                memcpy(dst + sd, "ITV0", 4);
-               memcpy(dst + sd + 4, dst + sd + 12, line * 43);
+               memmove(dst + sd + 4, dst + sd + 12, line * 43);
                size = 4 + ((43 * line + 3) & ~3);
        } else {
                memcpy(dst + sd, "itv0", 4);
 
                   (the max size of the VBI data is 36 * 43 + 4 bytes).
                   So in this case we use the magic number 'ITV0'. */
                memcpy(dst + sd, "ITV0", 4);
-               memcpy(dst + sd + 4, dst + sd + 12, line * 43);
+               memmove(dst + sd + 4, dst + sd + 12, line * 43);
                size = 4 + ((43 * line + 3) & ~3);
        } else {
                memcpy(dst + sd, "itv0", 4);
                while (vi->cc_payload_idx) {
                        cc = vi->cc_payload[0];
 
-                       memcpy(vi->cc_payload, vi->cc_payload + 1,
+                       memmove(vi->cc_payload, vi->cc_payload + 1,
                                        sizeof(vi->cc_payload) - sizeof(vi->cc_payload[0]));
                        vi->cc_payload_idx--;
                        if (vi->cc_payload_idx && cc.odd[0] == 0x80 && cc.odd[1] == 0x80)