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;
}
Exemple #2
0
asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
{
	struct pt_regs *old_regs = set_irq_regs(regs);

	irq_enter();

	check_stack_overflow(irq);

	/*
	 * Some hardware gives randomly wrong interrupts.  Rather
	 * than crashing, do something sensible.
	 */
	if (irq >= NR_IRQS)
		handle_bad_irq(&bad_irq_desc);
	else
		generic_handle_irq(irq);

	maybe_lower_to_irq14();

	irq_exit();

	set_irq_regs(old_regs);
}
static void check_stack_overflow() {
  return check_stack_overflow();
}