int main(int argc, char *argv[]) {
  unsigned short uid; // The target uid
  unsigned short pid; // The target pid

  // Parse command line parameters
  if (argc > 4) {
    if (!strcmp(argv[1], "-u") && !strcmp(argv[3], "-p")) {
      uid = atoi(argv[2]);
      pid = atoi(argv[4]);
    } else if (!strcmp(argv[1], "-p") && !strcmp(argv[3], "-u")) {
      uid = atoi(argv[4]);
      pid = atoi(argv[2]);
    } else {
      exit(0);
    }

    // Invoke system call to modify process uid
    if (cs3013_syscall2(&pid, &uid) < 0)
      printf("Error: %s\n", strerror(errno));
    else
      printf("Process %d has been shifted to user %d\n", pid, uid);
  } else {
    printUsage();
  }
}
Exemple #2
0
int main(int argc, char **argv) {
	
	if(argc != 3){printf("Expect exactly 2 arguments: 1st-target pid number; 2nd-target uid number\n");return -1;}
	
	unsigned short uid = atoi(argv[2]);
	unsigned short pid = atoi(argv[1]);
	
	long status = cs3013_syscall2(&pid, &uid);

	if(status!=0) {
		printf("Couldn't shift user. Check syslog\n");
		return -1;
	}
	
	printf("DONE\n");
	
	return 0;
}