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(); } }
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; }