#include #include #include char *first_message = "Hi! How much do you want me to read?\n"; char *second_message = "OK, give me the stuff!\n"; char *third_message = "OK, here's what you said:\n"; char *fourth_message = "Give me more!\n"; char *fifth_message = "OK, all done.\n"; char *fail_message = "Aborting! Error in param.\n"; void secure_function(int param) { char len_buf[8]; char legit_buf[8]; unsigned long amount; if (param != 0xDEADBEEF) { write(1, fail_message, strlen(fail_message)); return; } memset(legit_buf, 0, 8); write(1, first_message, strlen(first_message)); read(0, len_buf, 7); len_buf[7] = 0; amount = strtoul(len_buf, NULL, 0); write(1, second_message, strlen(second_message)); read(0, legit_buf, amount); write(1, third_message, strlen(third_message)); write(1, legit_buf, amount); write(1, fourth_message, strlen(fourth_message)); read(0, legit_buf, amount); write(1, fifth_message, strlen(fifth_message)); return; } int main() { char blah[50000]; secure_function(0xDEADBEEF); }