#include <string.h>
#include <errno.h>
+#include <sys/mman.h>
#include <libcryptsetup.h>
if (argc >= 6 && argv[5][0] && !streq(argv[5], "-"))
parse_options(argv[5]);
+ /* A delicious drop of snake oil */
+ mlockall(MCL_FUTURE);
+
if ((k = crypt_init(&cd, argv[3]))) {
log_error("crypt_init() failed: %s", strerror(-k));
goto finish;
password = NULL;
if (!key_file) {
+ char *text;
+
+ if (asprintf(&text, "Please enter passphrase for disk %s!", argv[2]) < 0) {
+ log_error("Out of memory");
+ goto finish;
+ }
+
+ k = ask_password_auto(text, "drive-harddisk", until, &password);
+ free(text);
- if ((k = ask_password_auto("Please enter passphrase for disk:", "drive-harddisk", until, &password)) < 0) {
+ if (k < 0) {
log_error("Failed to query password: %s", strerror(-k));
goto finish;
}
if (opt_verify) {
char *password2 = NULL;
- if ((k = ask_password_auto("Please enter passphrase for disk (verification):", "drive-harddisk", until, &password2)) < 0) {
+ if (asprintf(&text, "Please enter passphrase for disk %s! (verification)", argv[2]) < 0) {
+ log_error("Out of memory");
+ goto finish;
+ }
+
+ k = ask_password_auto(text, "drive-harddisk", until, &password2);
+ free(text);
+
+ if (k < 0) {
log_error("Failed to query verification password: %s", strerror(-k));
goto finish;
}