En mi proyecto uno de los argumentos de la línea de comandos se carga en un VLA C99 (matriz de longitud variable) como se muestra en el código de ejemplo a continuación.
Mi pregunta es: ¿puede ser explotado? En caso afirmativo, me gustaría que me mostraran cómo y también cómo parchearlo.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
if (argc != 2)
return EXIT_FAILURE;
char msg[strlen(argv[1]) + 1];
strcpy(msg, argv[1]);
printf("%s\n", msg);
return EXIT_SUCCESS;
}