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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user