int _su(int argc, char ** argv) { char * username = NULL; char * password = NULL; printf("Login: "******"Password: "******"Successfully logged in as %s\n", username); } else { printf("Bad credentials, try again...\n"); } } free(username); free(password); }
/** Starts a shell, it's a user process, but yes, resides in the kernel's code */ int tty_main (int argc, char ** argv) { clear_screen(); char cadena[50]; int status = 0; // 0: logged out; 1: logged in int val = 0; int tty_number = 0; val = 0; tty_number = atoi(argv[1]) + 1; char * input; char * username; char * password; printf("Monix v1 - TTY %d\n", tty_number); printf("Cristian Pereyra - Legajo 51190\n"); printf("Sistemas Operativos - 2011 - ITBA\n"); printf("Dennis Ritchie RIP\n"); int child; while(1) { switch (status){ case 1: printf("user@tty%d:", tty_number); input = (char *) getConsoleString(1); process_input(input, tty_number); if(getuid(NULL) == -1) { status = 0; } break; case 0: child = pcreate("su", 1, NULL); prun(child); waitpid(child); if(getuid(NULL) != -1) { status = 1; } break; } } return 0; }