Sto seguendo la presentazione della lezione di sicurezza Stanford CS155 per imparare l'overflow dei numeri interi. Oggi ho imparato che la funzione memcpy () può portare a overflow. La presentazione dice: Se ho un codice simile al seguente, la seconda funzione memcpy () potrebbe sovraccaricare l'heap .
void func( char *buf1, *buf2, unsigned int len1, len2) {
char temp[256];
if (len1 + len2 > 256) {return -1} // length check
memcpy(temp, buf1, len1); // cat buffers
memcpy(temp+len1, buf2, len2);
do-something(temp); // do stuff
}
Come posso evitare l'overflow? Cosa dovrei modificare in memcpy()
in modo che non causi un overflow?