From: Andrei Borzenkov Date: Wed, 18 Nov 2015 19:23:58 +0000 (+0300) Subject: unix: do not close stdin in grub_passwd_get X-Git-Tag: 2.02-beta3~169 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a46cbcc5c1c746562fd7181bf0f2337db065201;p=thirdparty%2Fgrub.git unix: do not close stdin in grub_passwd_get This makes it impossible to read from stdin without controlling tty: 10:/mnt # echo -e passwd\\npasswd | setsid ./grub-mkpasswd-pbkdf2 Enter password: Reenter password: ./grub-mkpasswd-pbkdf2: error: failure to read password. 10:/mnt --- diff --git a/grub-core/osdep/unix/password.c b/grub-core/osdep/unix/password.c index 4b9507bce..9996b244b 100644 --- a/grub-core/osdep/unix/password.c +++ b/grub-core/osdep/unix/password.c @@ -54,7 +54,8 @@ grub_password_get (char buf[], unsigned buf_size) grub_memset (buf, 0, buf_size); if (!fgets (buf, buf_size, stdin)) { - fclose (in); + if (in != stdin) + fclose (in); return 0; } ptr = buf + strlen (buf) - 1; @@ -67,7 +68,8 @@ grub_password_get (char buf[], unsigned buf_size) grub_xputs ("\n"); grub_refresh (); - fclose (in); + if (in != stdin) + fclose (in); return 1; }