/*
 * Copyright (c) 2012 The Chromium OS Authors.
 *
 * Based on:
 * http://bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/master/view/head:/scripts/kernel-security/ptrace/sleeper.c
 * Copyright 2010 Canonical, Ltd
 * License: GPLv3
 * Author: Kees Cook <kees.cook@canonical.com>
 */
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdint.h>
#include <string.h>
#include <stdint.h>
#include <stddef.h>
#include <inttypes.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/prctl.h>
#include <signal.h>

#ifndef PR_SET_PTRACER
#define PR_SET_PTRACER 0x59616d61
#endif

int main(int argc, char* argv[]) {
  long pid;

  if (argc < 3) {
    fprintf(stderr, "Usage: %s TRACER_PID SLEEP_SECONDS\n", argv[0]);
    /* Without arguments, send a SIGINT to ourself so that gdb can
     * regain control without needing debugging symbols.
     */
    kill(getpid(), SIGINT);
    return 1;
  }

  pid = strtol(argv[1], NULL, 10);
  if (pid != -2) {
    if (prctl(PR_SET_PTRACER, pid, 0, 0, 0)) {
      perror("prctl");
      puts("failed");
      return 1;
    }
  }

  puts("ready");
  fflush(NULL);
  sleep(atoi(argv[2]));

  return 0;
}
