LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

Вот этот фрагмент --

-        if (!arg_type || streq(arg_type, CRYPT_LUKS1))
+        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                 r = crypt_load(cd, CRYPT_LUKS1, NULL);
+                if (r < 0) {
+                        log_error("crypt_load() failed on device %s.\n", crypt_get_device_name(cd));
+                        return r;
+                }
+
+                if (data_device)
+                        r = crypt_set_data_device(cd, data_device);
+        }

на мой взгляд, неверен. arg_type == NULL имеет семантику «автоподбора типа», т. е. ошибка должна игнорироваться. Можно сделать так:

        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                r = crypt_load(cd, CRYPT_LUKS1, NULL);
                if (r == 0) {
                        <твой код>
                }
        }
Репорт об ошибке там внизу уже есть. Хотя его можно именно что перенести сюда (потому что вторая ветка r не устанавливает), но с отдельной проверкой на arg_type != NULL:
        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                r = crypt_load(cd, CRYPT_LUKS1, NULL);
                if (arg_type && r < 0)
                        return log_error_errno(r, "Loading of cryptographic parameters failed: %m");

                <твой код>
        }

Исправление intelfx, :

Вот этот фрагмент --

-        if (!arg_type || streq(arg_type, CRYPT_LUKS1))
+        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                 r = crypt_load(cd, CRYPT_LUKS1, NULL);
+                if (r < 0) {
+                        log_error("crypt_load() failed on device %s.\n", crypt_get_device_name(cd));
+                        return r;
+                }
+
+                if (data_device)
+                        r = crypt_set_data_device(cd, data_device);
+        }

на мой взгляд, неверен. arg_type == NULL имеет семантику «автоподбора типа», т. е. ошибка должна игнорироваться. Можно сделать так:

        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                r = crypt_load(cd, CRYPT_LUKS1, NULL);
                if (r == 0) {
                        <твой код>
                }
        }
Репорт об ошибке там внизу уже есть. Хотя его можно именно что перенести сюда, но с отдельной проверкой на arg_type != NULL:
        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                r = crypt_load(cd, CRYPT_LUKS1, NULL);
                if (arg_type && r < 0)
                        return log_error_errno(r, "Loading of cryptographic parameters failed: %m");

                <твой код>
        }

Исправление intelfx, :

Вот этот фрагмент --

-        if (!arg_type || streq(arg_type, CRYPT_LUKS1))
+        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                 r = crypt_load(cd, CRYPT_LUKS1, NULL);
+                if (r < 0) {
+                        log_error("crypt_load() failed on device %s.\n", crypt_get_device_name(cd));
+                        return r;
+                }
+
+                if (data_device)
+                        r = crypt_set_data_device(cd, data_device);
+        }

на мой взгляд, неверен. arg_type == NULL имеет семантику «автоподбора типа», т. е. ошибка должна игнорироваться. Можно сделать так:

        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                r = crypt_load(cd, CRYPT_LUKS1, NULL);
                if (r == 0) {
                        <твой код>
                }
        }
Репорт об ошибке там внизу уже есть. Хотя его можно именно что перенести сюда, но с отдельной проверкой на arg_type != NULL.

Исправление intelfx, :

Вот этот фрагмент --

-        if (!arg_type || streq(arg_type, CRYPT_LUKS1))
+        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                 r = crypt_load(cd, CRYPT_LUKS1, NULL);
+                if (r < 0) {
+                        log_error("crypt_load() failed on device %s.\n", crypt_get_device_name(cd));
+                        return r;
+                }
+
+                if (data_device)
+                        r = crypt_set_data_device(cd, data_device);
+        }

на мой взгляд, неверен. arg_type == NULL имеет семантику «автоподбора типа», т. е. ошибка должна игнорироваться. Можно сделать так:

        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                r = crypt_load(cd, CRYPT_LUKS1, NULL);
                if (r == 0) {
                        <твой код>
                }
        }
Репорт об ошибке там внизу уже есть. Хотя его можно именно что перенести сюда, но с отдельной проверкой на arg_type != NULL.

Исправление intelfx, :

Вот этот фрагмент --

-        if (!arg_type || streq(arg_type, CRYPT_LUKS1))
+        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                 r = crypt_load(cd, CRYPT_LUKS1, NULL);
+                if (r < 0) {
+                        log_error("crypt_load() failed on device %s.\n", crypt_get_device_name(cd));
+                        return r;
+                }
+
+                if (data_device)
+                        r = crypt_set_data_device(cd, data_device);
+        }

на мой взгляд, неверен. arg_type == NULL имеет семантику «автоподбора типа», т. е. ошибка должна игнорироваться. Можно сделать так:

        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                r = crypt_load(cd, CRYPT_LUKS1, NULL);
                if (r == 0) {
                        <твой код>
                }
        }
Репорт об ошибке там внизу уже есть.

Исходная версия intelfx, :

Вот этот фрагмент --

-        if (!arg_type || streq(arg_type, CRYPT_LUKS1))
+        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                 r = crypt_load(cd, CRYPT_LUKS1, NULL);
+                if (r < 0) {
+                        log_error("crypt_load() failed on device %s.\n", crypt_get_device_name(cd));
+                        return r;
+                }
+
+                if (data_device)
+                        r = crypt_set_data_device(cd, data_device);
+        }

на мой взгляд, неверен. arg_type == NULL имеет семантику «автоподбора типа», т. е. ошибка должна игнорироваться. Можно сделать так:

        if (!arg_type || streq(arg_type, CRYPT_LUKS1)) {
                r = crypt_load(cd, CRYPT_LUKS1, NULL);
                if (r == 0) {
                        <твой код>
                }
        }