Merge pull request #7619 from msekletar/cryptsetup-image-name

cryptsetup: when unlocking always put path to the object into Id
This commit is contained in:
Lennart Poettering
2017-12-13 16:46:57 +01:00
committed by GitHub
+7 -32
View File
@@ -249,23 +249,6 @@ static int parse_options(const char *options) {
return 0;
}
static int disk_major_minor(const char *path, char **ret) {
struct stat st;
assert(path);
if (stat(path, &st) < 0)
return -errno;
if (!S_ISBLK(st.st_mode))
return -EINVAL;
if (asprintf(ret, "/dev/block/%d:%d", major(st.st_rdev), minor(st.st_rdev)) < 0)
return -errno;
return 0;
}
static char* disk_description(const char *path) {
static const char name_fields[] =
@@ -324,7 +307,7 @@ static char *disk_mount_point(const char *label) {
}
static int get_password(const char *vol, const char *src, usec_t until, bool accept_cached, char ***ret) {
_cleanup_free_ char *description = NULL, *name_buffer = NULL, *mount_point = NULL, *maj_min = NULL, *text = NULL, *escaped_name = NULL;
_cleanup_free_ char *description = NULL, *name_buffer = NULL, *mount_point = NULL, *text = NULL, *disk_path = NULL;
_cleanup_strv_free_erase_ char **passwords = NULL;
const char *name = NULL;
char **p, *id;
@@ -337,6 +320,10 @@ static int get_password(const char *vol, const char *src, usec_t until, bool acc
description = disk_description(src);
mount_point = disk_mount_point(vol);
disk_path = cescape(src);
if (!disk_path)
return log_oom();
if (description && streq(vol, description))
/* If the description string is simply the
* volume name, then let's not show this
@@ -358,19 +345,7 @@ static int get_password(const char *vol, const char *src, usec_t until, bool acc
if (asprintf(&text, "Please enter passphrase for disk %s!", name) < 0)
return log_oom();
if (src)
(void) disk_major_minor(src, &maj_min);
if (maj_min) {
escaped_name = maj_min;
maj_min = NULL;
} else
escaped_name = cescape(name);
if (!escaped_name)
return log_oom();
id = strjoina("cryptsetup:", escaped_name);
id = strjoina("cryptsetup:", disk_path);
r = ask_password_auto(text, "drive-harddisk", id, "cryptsetup", until,
ASK_PASSWORD_PUSH_CACHE | (accept_cached*ASK_PASSWORD_ACCEPT_CACHED),
@@ -386,7 +361,7 @@ static int get_password(const char *vol, const char *src, usec_t until, bool acc
if (asprintf(&text, "Please enter passphrase for disk %s! (verification)", name) < 0)
return log_oom();
id = strjoina("cryptsetup-verification:", escaped_name);
id = strjoina("cryptsetup-verification:", disk_path);
r = ask_password_auto(text, "drive-harddisk", id, "cryptsetup", until, ASK_PASSWORD_PUSH_CACHE, &passwords2);
if (r < 0)