luks2: unify naming for requirements flags

This commit is contained in:
Ondrej Kozina
2017-09-26 18:13:34 +02:00
committed by Milan Broz
parent c015aeca4e
commit b3feae5474
2 changed files with 20 additions and 22 deletions

View File

@@ -334,8 +334,8 @@ int LUKS2_config_set_flags(struct crypt_device *cd, struct luks2_hdr *hdr, uint3
/* /*
* Requirements for device activation or header modification * Requirements for device activation or header modification
*/ */
int LUKS2_config_get_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t *requirements); int LUKS2_config_get_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t *reqs);
int LUKS2_config_set_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t requirements); int LUKS2_config_set_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t reqs);
int LUKS2_unmet_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, int quiet); int LUKS2_unmet_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, int quiet);

View File

@@ -984,9 +984,9 @@ int LUKS2_hdr_backup(struct crypt_device *cd, struct luks2_hdr *hdr,
return r; return r;
} }
static int reqs_unknown(uint32_t flags) static int reqs_unknown(uint32_t reqs)
{ {
return flags & CRYPT_REQUIREMENT_UNKNOWN; return reqs & CRYPT_REQUIREMENT_UNKNOWN;
} }
int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr, int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr,
@@ -998,7 +998,7 @@ int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr,
char *buffer = NULL, msg[1024]; char *buffer = NULL, msg[1024];
struct luks2_hdr hdr_file; struct luks2_hdr hdr_file;
struct luks2_hdr tmp_hdr = {}; struct luks2_hdr tmp_hdr = {};
uint32_t flags = 0; uint32_t reqs = 0;
r = device_alloc(&backup_device, backup_file); r = device_alloc(&backup_device, backup_file);
if (r < 0) if (r < 0)
@@ -1053,7 +1053,7 @@ int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr,
r = LUKS2_hdr_read(cd, &tmp_hdr); r = LUKS2_hdr_read(cd, &tmp_hdr);
if (r == 0) { if (r == 0) {
r = LUKS2_config_get_requirements(cd, &tmp_hdr, &flags); r = LUKS2_config_get_requirements(cd, &tmp_hdr, &reqs);
if (r) if (r)
goto out; goto out;
@@ -1077,8 +1077,8 @@ int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr,
r ? _("does not contain LUKS2 header. Replacing header can destroy data on that device.") : r ? _("does not contain LUKS2 header. Replacing header can destroy data on that device.") :
_("already contains LUKS2 header. Replacing header will destroy existing keyslots."), _("already contains LUKS2 header. Replacing header will destroy existing keyslots."),
diff_uuid ? _("\nWARNING: real device header has different UUID than backup!") : "", diff_uuid ? _("\nWARNING: real device header has different UUID than backup!") : "",
reqs_unknown(flags) ? _("\nWARNING: unknown LUKS2 requirements detected in real device header!" reqs_unknown(reqs) ? _("\nWARNING: unknown LUKS2 requirements detected in real device header!"
"\nReplacing header with backup may corrupt the data on that device!") : ""); "\nReplacing header with backup may corrupt the data on that device!") : "");
if (r < 0 || (size_t) r >= sizeof(msg)) { if (r < 0 || (size_t) r >= sizeof(msg)) {
r = -ENOMEM; r = -ENOMEM;
goto out; goto out;
@@ -1238,17 +1238,17 @@ static uint32_t get_requirement_by_name(const char *requirement)
/* /*
* returns count of requirements (past cryptsetup 2.0 release) * returns count of requirements (past cryptsetup 2.0 release)
*/ */
int LUKS2_config_get_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t *requirements) int LUKS2_config_get_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t *reqs)
{ {
json_object *jobj_config, *jobj_requirements, *jobj_mandatory, *jobj; json_object *jobj_config, *jobj_requirements, *jobj_mandatory, *jobj;
int i, len; int i, len;
uint32_t flag; uint32_t req;
assert(hdr); assert(hdr);
if (!hdr || !requirements) if (!hdr || !reqs)
return -EINVAL; return -EINVAL;
*requirements = 0; *reqs = 0;
if (!json_object_object_get_ex(hdr->jobj, "config", &jobj_config)) if (!json_object_object_get_ex(hdr->jobj, "config", &jobj_config))
return 0; return 0;
@@ -1260,25 +1260,23 @@ int LUKS2_config_get_requirements(struct crypt_device *cd, struct luks2_hdr *hdr
return 0; return 0;
len = json_object_array_length(jobj_mandatory); len = json_object_array_length(jobj_mandatory);
if (!len) { if (!len)
log_dbg("No LUKS2 requirements detected.");
return 0; return 0;
}
log_dbg("LUKS2 requirements detected:"); log_dbg("LUKS2 requirements detected:");
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
jobj = json_object_array_get_idx(jobj_mandatory, i); jobj = json_object_array_get_idx(jobj_mandatory, i);
flag = get_requirement_by_name(json_object_get_string(jobj)); req = get_requirement_by_name(json_object_get_string(jobj));
log_dbg("%s - %sknown", json_object_get_string(jobj), log_dbg("%s - %sknown", json_object_get_string(jobj),
(flag & CRYPT_REQUIREMENT_UNKNOWN) ? "un" : ""); reqs_unknown(req) ? "un" : "");
*requirements |= flag; *reqs |= req;
} }
return 0; return 0;
} }
int LUKS2_config_set_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t requirements) int LUKS2_config_set_requirements(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t reqs)
{ {
int i, r = -EINVAL; int i, r = -EINVAL;
@@ -1292,7 +1290,7 @@ int LUKS2_config_set_requirements(struct crypt_device *cd, struct luks2_hdr *hdr
return -ENOMEM; return -ENOMEM;
for (i = 0; requirements_flags[i].description; i++) { for (i = 0; requirements_flags[i].description; i++) {
if (requirements & requirements_flags[i].flag) { if (reqs & requirements_flags[i].flag) {
jobj = json_object_new_string(requirements_flags[i].description); jobj = json_object_new_string(requirements_flags[i].description);
if (!jobj) { if (!jobj) {
r = -ENOMEM; r = -ENOMEM;
@@ -1300,12 +1298,12 @@ int LUKS2_config_set_requirements(struct crypt_device *cd, struct luks2_hdr *hdr
} }
json_object_array_add(jobj_mandatory, jobj); json_object_array_add(jobj_mandatory, jobj);
/* erase processed flag from input set */ /* erase processed flag from input set */
requirements &= ~(requirements_flags[i].flag); reqs &= ~(requirements_flags[i].flag);
} }
} }
/* any remaining bit in requirements is unknown therefore illegal */ /* any remaining bit in requirements is unknown therefore illegal */
if (requirements) { if (reqs) {
log_dbg("Illegal requiremnt flag(s) requested"); log_dbg("Illegal requiremnt flag(s) requested");
goto err; goto err;
} }