Fixed keyboard bug where keypresses were not being registered, working on libreadline
[tpg/acess2.git] / Usermode / Applications / login_src / main.c
index 2e4906d..2866dbd 100644 (file)
@@ -22,12 +22,19 @@ int main(int argc, char *argv[])
        {
                printf("\x1B[2J");      // Clear Screen
                // Validate User
-               do {
-                       if(uid == -1)   printf("\n");
+               for(;;)
+               {
                        sUsername = GetUsername();
                        sPassword = GetPassword();
-                       printf("\n");
-               } while( (uid = ValidateUser(sUsername, sPassword)) == -1 );
+                       if( (uid = ValidateUser(sUsername, sPassword)) == -1 )
+                       {
+                               printf("\nInvalid username or password for '%s'\n", sUsername);
+                               free(sUsername);
+                               free(sPassword);
+                       }
+                       else
+                               break;
+               }
                printf("\n");
                
                // Create child process
@@ -50,7 +57,8 @@ int main(int argc, char *argv[])
                        child_argv[0] = uinfo->Shell;
                        // Set Environment
                        setgid(uinfo->GID);
-                       setuid(uid);
+                       //setuid(uid);
+                       setuid(uinfo->UID);
                        
                        execve(uinfo->Shell, child_argv, child_envp);
                        exit(-1);
@@ -68,7 +76,7 @@ int main(int argc, char *argv[])
  */
 char *GetUsername()
 {
-       char    ret[BUFLEN];
+       char    ret[BUFLEN] = {0};
         int    pos = 0;
        char    ch;
        

UCC git Repository :: git.ucc.asn.au