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;
}
Пример #2
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;
}