[PATCH] wpa_passphrase: Disable terminal echo when reading from stdin
Abhiram V
abhi.raa.man.v at gmail.com
Mon Nov 21 08:30:27 PST 2022
Disable terminal echo using tcgetattr() and tcsetattr() when reading
passphrase from stdin.
Signed-off-by: Abhiram V <abhi.raa.man.v at gmail.com>
---
wpa_supplicant/wpa_passphrase.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/wpa_supplicant/wpa_passphrase.c b/wpa_supplicant/wpa_passphrase.c
index d9c07e673..4f185da5b 100644
--- a/wpa_supplicant/wpa_passphrase.c
+++ b/wpa_supplicant/wpa_passphrase.c
@@ -10,10 +10,12 @@
#include "common.h"
#include "crypto/sha1.h"
+#include <termios.h>
int main(int argc, char *argv[])
{
+ struct termios term;
unsigned char psk[32];
int i;
char *ssid, *passphrase, buf[64], *pos;
@@ -32,10 +34,24 @@ int main(int argc, char *argv[])
passphrase = argv[2];
} else {
fprintf(stderr, "# reading passphrase from stdin\n");
+ if (tcgetattr(STDIN_FILENO, &term) < 0) {
+ perror("tcgetattr");
+ return 1;
+ }
+ term.c_lflag &= ~ECHO;
+ if (tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0) {
+ perror("tcsetattr:error disabling echo");
+ return 1;
+ }
if (fgets(buf, sizeof(buf), stdin) == NULL) {
fprintf(stderr, "Failed to read passphrase\n");
return 1;
}
+ term.c_cflag |= ECHO;
+ if (tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0) {
+ perror("tcsetattr:error enabling echo");
+ return 1;
+ }
buf[sizeof(buf) - 1] = '\0';
pos = buf;
while (*pos != '\0') {
--
2.38.1
More information about the Hostap
mailing list