Do -fstack-protector y -fstack-protector-all también protegen las asignaciones de memoria basadas en el montón o solo las basadas en la pila?-fstack-protector, -fstack-protector-all y -fmudflap
¿Cuál es la diferencia entre los primeros 2 y -fmudflap?
¿Alguna recomendación sobre cuál es mejor para la depuración?
(no estoy seguro de si el gcc man page es lo suficientemente clara o simplemente no lo entiendo ...)
char foobar[10]; // stack-based
char *foobar = malloc(10); // heap-based
¿Cuál es su objetivo? ¿Desea asegurarse de que su código esté protegido y activar lo que lo protege bien? Si ese es el caso, gcc por defecto compila a la mayoría si todas las protecciones están activadas (por ejemplo, el valor canario -fatack-protector parece habilitar). Si su objetivo es deshabilitar selectivamente en un estado de depuración para que sea más fácil seguir la lógica del código sin tener que preguntarse qué partes del código son meramente protecciones de pirateo, puede desactivar muchas protecciones (creo que todo menos la configuración del nx poco más o menos). En ese caso, la opción que desea (entre otras) es -fno-stack-protector. – gnometorule
Bueno, hay otros que creo que son difíciles de desactivar, sino son imposibles, por ejemplo, si ciertas tablas de redirección son grabables. – gnometorule
@gnometorule Mi objetivo es habilitar la mayor protección posible. Pero para eso, necesito entender qué hacen y qué no hacen cada uno. –