Согласно этот поток , память, выделенная malloc , по крайней мере, имеет PROT_READ | PROT_EXEC , иначе функция contaned не может быть выполнена.
malloc
PROT_READ | PROT_EXEC
man malloc ничего не упоминает о защите, поэтому вопрос.
man malloc