IIUC, la función C de strcpy copia la cadena de caracteres x a la cadena de caracteres y.
void strcpy(char x[], char y[]) {
int i = 0;
while (x[i] != 0) {
y[i] = x[i];
i = i + 1;
}
}
IIUC, el programa de copia de cadena simple anterior tiene un defecto grave: no tiene forma de saber que y tiene suficiente espacio para recibir x. Si un programador pudiera ejecutar strcpy con una cadena larga x, el programador podría escribir bytes en toda la memoria, posiblemente incluso modificando el código almacenado en ubicaciones de memoria subsiguientes y el código modificado podría hacerse cargo de la máquina.
Lo anterior es solo una teoría y me gustaría probarlo en la práctica para una demostración porque estudio la seguridad informática. ¿Hay algún buen ejemplo práctico en alguna parte?