From 60bdaebcb1a5c510646bf5924c6b33c6c47c7820 Mon Sep 17 00:00:00 2001
From: Roman Lacko <xlacko1@fi.muni.cz>
Date: Mon, 8 Nov 2021 14:46:49 +0100
Subject: [PATCH] install: restore "stty echo" upon receiving SIGINT when
 asking for password

---
 install.pl | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/install.pl b/install.pl
index 1273755..7d497b1 100755
--- a/install.pl
+++ b/install.pl
@@ -124,16 +124,27 @@ sub prompt_username {
     return $username;
 }
 
-sub prompt_password {
-    print "Enter your faculty password: ";
-    system("stty -echo");
-    chomp(my $password1 = <STDIN>);
-    system("stty echo");
-    print "\nRepeat your faculty password: ";
+sub prompt_secret {
+    my ($prompt) = @_;
+    print "$prompt: ";
+
+    local $SIG{INT} = sub {
+        system("stty echo");
+        exit 1;
+    };
+
+    my $value;
     system("stty -echo");
-    chomp(my $password2 = <STDIN>);
+    chomp($value = <STDIN>);
     system("stty echo");
+
     print "\n";
+    return $value;
+}
+
+sub prompt_password {
+    my $password1 = prompt_secret("Enter your faculty password");
+    my $password2 = prompt_secret("Repeat your faculty password");
 
     if ($password1 ne $password2) {
         die "[ERROR] Passwords do not match!";
-- 
GitLab