ref: e59fdba360cf7884bcb964b4ee999fcf8aaad16a
parent: 8fe978f00633ce7bdf4c0413e72b5a78ddca7bec
author: mkf <mkf@cloud9p.org>
date: Mon Dec 4 00:14:01 IST 2023
login: don't print characters, fix some oveflow issues as well
--- a/cmd/login.c
+++ b/cmd/login.c
@@ -76,12 +76,20 @@
i = 0;
p = malloc(PASSWD_MAX);
- while(i < PASSWD_MAX - 1)
+ while(1)
{+
c = ps2_getc();
- if(c == '\b')
+ if(c == '\r')
{+ p[i] = '\0';
+ break;
+ }
+ else if(i >= PASSWD_MAX - 1) /* silently ignore */
+ continue;
+ else if(c == '\b')
+ {if(i)
i--;
p[i] = '\0';
@@ -88,19 +96,14 @@
printf("\b");continue;
}
- else if(c == '\r')
- {- p[i] = '\0';
- break;
- }
+
p[i] = c;
- printf("*");i++;
}
printf("\n");- if(i > PASSWD_MAX)
+ if(i > PASSWD_MAX - 1)
{ printf("\noverflow!\n");return OVERFLOW;
@@ -113,7 +116,8 @@
}
else
{- printf("%s", answers[(i) % (sizeof(answers) / sizeof(char*))]);+ printf("%s", answers[i % (sizeof(answers) / sizeof(char*))]);return AUTH_FAILED;
}
}
+
--
⑨