gadget exploit stack smashing prototype-oriented programming goto privilege escalation aspect-oriented programming role-oriented language object oriented programming object-oriented language