int main(int argc, char *argv[]) { printf("Usage: %s [item]\n\titem:\n\t"\ "1 - wild pointer dereference\n\t"\ "2 - null pointer dereference\n\t" \ "3 - write to read-only memory\n\t"\ "4 - buffer overflow\n\t"\ "5 - stack overflow\n\t"\ "\nInput item: ", argv[0]); int item = 0; scanf("%d", &item); printf("item = %d\n", item); switch (item) { case 1: wild_ptr_dereference(); break; case 2: null_ptr_dereference(); break; case 3: wirte_to_readonly_memory(); break; case 4: check_buffer_overflow(); break; case 5: check_stack_overflow(); break; default: break; } return 0; }
int luacstring_input (void) { char *st; int ret; rope *t = read_spindle.head; if (!read_spindle.complete) { read_spindle.complete =1; read_spindle.tail = NULL; } if (t == NULL) { if(read_spindle.tail != NULL) free(read_spindle.tail); read_spindle.tail = NULL; return 0; } if (t->text != NULL) { st = t->text; /* put that thing in the buffer */ last = first; ret = last; check_buffer_overflow (last + t->tsize); /* make sure it fits in the pool as well (for show_token_list c.s) */ check_pool_overflow(pool_ptr + t->tsize); while (t->tsize-->0) buffer[last++] = *st++; if (!t->partial) { while (last-1>ret && buffer[last-1] == ' ') last--; } free (t->text); t->text = NULL; } if (read_spindle.tail != NULL) { /* not a one-liner */ free(read_spindle.tail); } read_spindle.tail = t; read_spindle.head = t->next; return 1; }