Stitching the gadgets: on the ineffectiveness of coarse-grained control-flow integrity protection
memory errors : the past , the present , and the future .