diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 20:57:42 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 20:57:42 +0100 |
commit | 1798c4aeca70ac8d0a243684d6a798fbc65735f8 (patch) | |
tree | e48e19cb6fa03de18e1c63e1a93371b7ebc4eb56 /dev-libs/volume_key/files/volume_key-0.3.9-cryptsetup2.patch | |
parent | d87262dd706fec50cd150aab3e93883b6337466d (diff) |
gentoo resync : 14.07.2018
Diffstat (limited to 'dev-libs/volume_key/files/volume_key-0.3.9-cryptsetup2.patch')
-rw-r--r-- | dev-libs/volume_key/files/volume_key-0.3.9-cryptsetup2.patch | 331 |
1 files changed, 0 insertions, 331 deletions
diff --git a/dev-libs/volume_key/files/volume_key-0.3.9-cryptsetup2.patch b/dev-libs/volume_key/files/volume_key-0.3.9-cryptsetup2.patch deleted file mode 100644 index 2798e882345b..000000000000 --- a/dev-libs/volume_key/files/volume_key-0.3.9-cryptsetup2.patch +++ /dev/null @@ -1,331 +0,0 @@ -From ecef526a51c5a276681472fd6df239570c9ce518 Mon Sep 17 00:00:00 2001 -From: Miloslav Trmač <mitr@redhat.com> -Date: Nov 07 2017 15:55:55 +0000 -Subject: Stop using crypt_get_error - - -Instead of crypt_get_error, which has been removed in cryptsetup 2.0, -set up a log callback, which is available in both older and newer -versions. - -Fixes #13. - ---- - -diff --git a/lib/volume_luks.c b/lib/volume_luks.c -index 14794d7..f4bf2c8 100644 ---- a/lib/volume_luks.c -+++ b/lib/volume_luks.c -@@ -61,17 +61,13 @@ my_strerror (int err_no) - } - - /* Set ERROR based on libcryptsetup error state after returning RES. -- Use CODE. */ -+ Use CODE and LAST_LOG_ENTRY. */ - static void --error_from_cryptsetup (GError **error, LIBVKError code, int res) -+error_from_cryptsetup (GError **error, LIBVKError code, int res, -+ char *last_log_entry) - { -- /* It's not possible to get the error message length from libcryptsetup, just -- guess. */ -- char crypt_msg[4096]; -- -- crypt_get_error (crypt_msg, sizeof (crypt_msg)); -- if (crypt_msg[0] != '\0') -- g_set_error (error, LIBVK_ERROR, code, "%s", crypt_msg); -+ if (last_log_entry != NULL && last_log_entry[0] != '\0') -+ g_set_error (error, LIBVK_ERROR, code, "%s", last_log_entry); - else - { - char *s; -@@ -82,17 +78,33 @@ error_from_cryptsetup (GError **error, LIBVKError code, int res) - } - } - -+static void -+record_cryptsetup_log_entry (int level, const char *msg, void *usrptr) -+{ -+ char **last_log_entry = usrptr; -+ -+ if (level == CRYPT_LOG_ERROR) -+ { -+ g_free (*last_log_entry); -+ *last_log_entry = g_strdup (msg); -+ } -+} -+ - /* Open volume PATH and load its header. -+ Set up *LAST_LOG_ENTRY to be updated to the last logged message for the -+ device. The caller must g_free(*LAST_LOG_ENTRY) after closing the device. - Return the volume, or NULL on error. */ - static struct crypt_device * --open_crypt_device (const char *path, GError **error) -+open_crypt_device (const char *path, char **last_log_entry, GError **error) - { - struct crypt_device *cd; - int r; - -+ *last_log_entry = NULL; - r = crypt_init (&cd, path); - if (r < 0) - goto err; -+ crypt_set_log_callback(cd, record_cryptsetup_log_entry, last_log_entry); - r = crypt_load (cd, CRYPT_LUKS1, NULL); - if (r < 0) - goto err_cd; -@@ -101,9 +113,12 @@ open_crypt_device (const char *path, GError **error) - err_cd: - crypt_free (cd); - err: -- error_from_cryptsetup (error, LIBVK_ERROR_VOLUME_UNKNOWN_FORMAT, r); -+ error_from_cryptsetup (error, LIBVK_ERROR_VOLUME_UNKNOWN_FORMAT, r, -+ *last_log_entry); - g_prefix_error (error, _("Error getting information about volume `%s': "), - path); -+ g_free (*last_log_entry); -+ *last_log_entry = NULL; - return NULL; - } - -@@ -173,10 +188,11 @@ luks_volume_open (struct libvk_volume *vol, const char *path, GError **error) - { - struct luks_volume *luks; - struct crypt_device *cd; -+ char *last_log_entry; - const char *uuid; - - (void)vol; -- cd = open_crypt_device (path, error); -+ cd = open_crypt_device (path, &last_log_entry, error); - if (cd == NULL) - return NULL; - /* A bit of paranoia */ -@@ -187,6 +203,7 @@ luks_volume_open (struct libvk_volume *vol, const char *path, GError **error) - _("UUID mismatch between libblkid and libcryptsetup: `%s' " - "vs. `%s'"), vol->uuid, uuid); - crypt_free (cd); -+ g_free (last_log_entry); - return NULL; - } - -@@ -195,6 +212,7 @@ luks_volume_open (struct libvk_volume *vol, const char *path, GError **error) - luks->cipher_mode = g_strdup (crypt_get_cipher_mode (cd)); - luks->key_bytes = crypt_get_volume_key_size (cd); - crypt_free (cd); -+ g_free (last_log_entry); - - luks->key = NULL; - luks->passphrase = NULL; -@@ -256,7 +274,7 @@ luks_get_secret (struct libvk_volume *vol, enum libvk_secret secret_type, - const struct libvk_ui *ui, GError **error) - { - struct crypt_device *cd; -- char *passphrase; -+ char *last_log_entry, *passphrase; - void *key; - size_t key_length; - int slot; -@@ -276,7 +294,7 @@ luks_get_secret (struct libvk_volume *vol, enum libvk_secret secret_type, - _("Encryption information type unsupported in LUKS")); - goto err; - } -- cd = open_crypt_device (vol->path, error); -+ cd = open_crypt_device (vol->path, &last_log_entry, error); - if (cd == NULL) - goto err; - key_length = crypt_get_volume_key_size (cd); -@@ -303,7 +321,7 @@ luks_get_secret (struct libvk_volume *vol, enum libvk_secret secret_type, - g_free_passphrase (passphrase); - if (r != -EPERM) - { -- error_from_cryptsetup (error, LIBVK_ERROR_FAILED, r); -+ error_from_cryptsetup (error, LIBVK_ERROR_FAILED, r, last_log_entry); - g_prefix_error (error, _("Error getting LUKS data encryption key: ")); - goto err_prompt; - } -@@ -322,12 +340,14 @@ luks_get_secret (struct libvk_volume *vol, enum libvk_secret secret_type, - vol->v.luks->passphrase_slot = slot; - g_free (prompt); - crypt_free (cd); -+ g_free (last_log_entry); - return 0; - - err_prompt: - g_free (prompt); - g_free_key (key, key_length); - crypt_free (cd); -+ g_free (last_log_entry); - err: - return -1; - } -@@ -383,11 +403,12 @@ luks_load_packet (struct libvk_volume *vol, const struct libvk_volume *packet, - if (packet->v.luks->key != NULL) - { - struct crypt_device *cd; -+ char *last_log_entry; - int r; - - g_return_val_if_fail (vol->v.luks->key_bytes == packet->v.luks->key_bytes, - -1); -- cd = open_crypt_device (vol->path, error); -+ cd = open_crypt_device (vol->path, &last_log_entry, error); - if (cd == NULL) - return -1; - r = crypt_volume_key_verify (cd, packet->v.luks->key, -@@ -395,21 +416,25 @@ luks_load_packet (struct libvk_volume *vol, const struct libvk_volume *packet, - crypt_free (cd); - if (r < 0) - { -- error_from_cryptsetup (error, LIBVK_ERROR_PACKET_VOLUME_MISMATCH, r); -+ error_from_cryptsetup (error, LIBVK_ERROR_PACKET_VOLUME_MISMATCH, r, -+ last_log_entry); - g_prefix_error (error, _("LUKS data encryption key in packet is " - "invalid: ")); -+ g_free (last_log_entry); - return -1; - } -+ g_free (last_log_entry); - luks_replace_key (vol, packet->v.luks->key); - } - if (packet->v.luks->passphrase != NULL) - { - struct crypt_device *cd; -+ char *last_log_entry; - void *key; - size_t key_size; - int r; - -- cd = open_crypt_device (vol->path, error); -+ cd = open_crypt_device (vol->path, &last_log_entry, error); - if (cd == NULL) - return -1; - key_size = crypt_get_volume_key_size (cd); -@@ -420,10 +445,13 @@ luks_load_packet (struct libvk_volume *vol, const struct libvk_volume *packet, - crypt_free (cd); - if (r < 0) - { -- error_from_cryptsetup (error, LIBVK_ERROR_PACKET_VOLUME_MISMATCH, r); -+ error_from_cryptsetup (error, LIBVK_ERROR_PACKET_VOLUME_MISMATCH, r, -+ last_log_entry); - g_prefix_error (error, _("LUKS passphrase in packet is invalid: ")); -+ g_free (last_log_entry); - return -1; - } -+ g_free (last_log_entry); - luks_replace_passphrase (vol, packet->v.luks->passphrase); - vol->v.luks->passphrase_slot = r; - if (packet->v.luks->key == NULL) -@@ -446,7 +474,7 @@ luks_apply_secret (struct libvk_volume *vol, const struct libvk_volume *packet, - GError **error) - { - struct crypt_device *cd; -- char *prompt, *prompt2, *error_prompt, *passphrase; -+ char *last_log_entry, *prompt, *prompt2, *error_prompt, *passphrase; - unsigned failed; - int res; - -@@ -498,7 +526,7 @@ luks_apply_secret (struct libvk_volume *vol, const struct libvk_volume *packet, - goto err_prompts; - - got_passphrase: -- cd = open_crypt_device (vol->path, error); -+ cd = open_crypt_device (vol->path, &last_log_entry, error); - if (cd == NULL) - goto err_passphrase; - res = crypt_keyslot_add_by_volume_key (cd, CRYPT_ANY_SLOT, -@@ -508,10 +536,12 @@ luks_apply_secret (struct libvk_volume *vol, const struct libvk_volume *packet, - crypt_free (cd); - if (res < 0) - { -- error_from_cryptsetup (error, LIBVK_ERROR_FAILED, res); -+ error_from_cryptsetup (error, LIBVK_ERROR_FAILED, res, last_log_entry); - g_prefix_error (error, _("Error adding a LUKS passphrase")); -+ g_free (last_log_entry); - goto err_passphrase; - } -+ g_free (last_log_entry); - - g_return_val_if_fail (vol->v.luks->key_bytes == packet->v.luks->key_bytes, - -1); -@@ -542,6 +572,7 @@ luks_add_secret (struct libvk_volume *vol, enum libvk_secret secret_type, - const void *secret, size_t size, GError **error) - { - struct crypt_device *cd; -+ char *last_log_entry; - int res; - - if (secret_type != LIBVK_SECRET_PASSPHRASE) -@@ -562,7 +593,7 @@ luks_add_secret (struct libvk_volume *vol, enum libvk_secret secret_type, - _("The passphrase must be a string")); - return -1; - } -- cd = open_crypt_device (vol->path, error); -+ cd = open_crypt_device (vol->path, &last_log_entry, error); - if (cd == NULL) - return -1; - res = crypt_keyslot_add_by_volume_key (cd, CRYPT_ANY_SLOT, vol->v.luks->key, -@@ -570,10 +601,12 @@ luks_add_secret (struct libvk_volume *vol, enum libvk_secret secret_type, - crypt_free (cd); - if (res < 0) - { -- error_from_cryptsetup (error, LIBVK_ERROR_FAILED, res); -+ error_from_cryptsetup (error, LIBVK_ERROR_FAILED, res, last_log_entry); - g_prefix_error (error, _("Error adding a LUKS passphrase")); -+ g_free (last_log_entry); - return -1; - } -+ g_free (last_log_entry); - - luks_replace_passphrase (vol, secret); - vol->v.luks->passphrase_slot = res; -@@ -823,12 +856,13 @@ luks_open_with_packet (struct libvk_volume *vol, - GError **error) - { - struct crypt_device *cd; -+ char *last_log_entry; - void *to_free; - const void *key; - int r; - size_t key_size; - -- cd = open_crypt_device (vol->path, error); -+ cd = open_crypt_device (vol->path, &last_log_entry, error); - if (cd == NULL) - goto err; - if (packet->v.luks->key != NULL) -@@ -846,7 +880,7 @@ luks_open_with_packet (struct libvk_volume *vol, - strlen (packet->v.luks->passphrase)); - if (r < 0) - { -- error_from_cryptsetup (error, LIBVK_ERROR_FAILED, r); -+ error_from_cryptsetup (error, LIBVK_ERROR_FAILED, r, last_log_entry); - g_prefix_error (error, _("Error getting LUKS data encryption key: ")); - goto err_to_free; - } -@@ -862,7 +896,7 @@ luks_open_with_packet (struct libvk_volume *vol, - r = crypt_activate_by_volume_key (cd, name, key, key_size, 0); - if (r < 0) - { -- error_from_cryptsetup (error, LIBVK_ERROR_FAILED, r); -+ error_from_cryptsetup (error, LIBVK_ERROR_FAILED, r, last_log_entry); - g_prefix_error (error, _("Error opening LUKS volume: ")); - goto err_to_free; - } -@@ -870,6 +904,7 @@ luks_open_with_packet (struct libvk_volume *vol, - if (to_free != NULL) - g_free_key (to_free, key_size); - crypt_free (cd); -+ g_free (last_log_entry); - return 0; - - err_to_free: -@@ -877,6 +912,7 @@ luks_open_with_packet (struct libvk_volume *vol, - g_free_key (to_free, key_size); - err_cd: - crypt_free (cd); -+ g_free (last_log_entry); - err: - return -1; - } - |