Con gcc , es posible compilar con -fstack-protector , pero omitir para una función específica.
Por ejemplo, digamos que tengo dos funciones.
void a() { ... } void b() { ... } ¿Puedo decirle al compilador que compile un programa que usará un valor controlado antes de la dirección de retorno guardada de a , pero no un valor controlado para b ?
Tendría que probar si funciona (inspeccione el código generado en Godbolt) pero parece que puede hacerlo, por ejemplo:
__attribute__ ((no_stack_protector)) void foo () { ... }
no_sanitize parece una opción intrigante, me pregunto quién la usa.