#include "resource.h"
#include "platform.h"
-#include <security/gpg.h>
+#include <security/security.h>
static const char *boot_hook_dir = PKG_SYSCONF_DIR "/boot.d";
enum {
boot_task->local_dtb_override = NULL;
boot_task->local_image_override = NULL;
- if ((result = gpg_validate_boot_files(boot_task))) {
+ if ((result = validate_boot_files(boot_task))) {
if (result == KEXEC_LOAD_DECRYPTION_FALURE) {
pb_log("%s: Aborting kexec due to"
" decryption failure\n", __func__);
- goto abort_kexec;
}
if (result == KEXEC_LOAD_SIGNATURE_FAILURE) {
pb_log("%s: Aborting kexec due to signature"
" verification failure\n", __func__);
- goto abort_kexec;
}
+
+ goto abort_kexec;
}
const char* local_initrd = (boot_task->local_initrd_override) ?
}
abort_kexec:
- gpg_validate_boot_files_cleanup(boot_task);
+ validate_boot_files_cleanup(boot_task);
return result;
}
return 0;
}
+ pb_log("Failed to load %s from %s\n", name,
+ pb_url_to_string(result->url));
update_status(task->status_fn, task->status_arg,
STATUS_ERROR,
_("Couldn't load %s from %s"), name,
static void cleanup_cancellations(struct boot_task *task,
struct load_url_result *cur_result)
{
- struct load_url_result *result, **results[] = {
- &task->image, &task->initrd, &task->dtb,
- };
+ struct boot_resource *resource;
+ struct load_url_result *result;
bool pending = false;
- unsigned int i;
- for (i = 0; i < ARRAY_SIZE(results); i++) {
- result = *results[i];
+ list_for_each_entry(&task->resources, resource, list) {
+ result = resource->result;
+ /* Nothing to do if a load hasn't actually started yet */
if (!result)
continue;
if (result == cur_result || result->status == LOAD_OK
|| result->status == LOAD_ERROR) {
cleanup_load(result);
- talloc_free(result);
- *results[i] = NULL;
-
/* ... and cancel any pending loads, which we'll free in
* the completion callback */
} else if (result->status == LOAD_ASYNC) {
STATUS_ERROR,
_("kexec reboot failed"));
}
+ } else {
+ pb_log("Failed to load all boot resources\n");
}
}
res->result = load_url_async(task, res->url, boot_process,
task, NULL, task->status_arg);
if (!res->result) {
+ pb_log("Error starting load for %s at %s\n",
+ res->name, pb_url_to_string(res->url));
update_status(task->status_fn, task->status_arg,
STATUS_ERROR, _("Error loading %s"),
res->name);
if (boot_task->verify_signature) {
/* Generate names of associated signature files and load */
if (image) {
- image_sig = gpg_get_signature_url(ctx, image);
+ image_sig = get_signature_url(ctx, image);
tmp = add_boot_resource(boot_task,
_("kernel image signature"), image_sig,
&boot_task->local_image_signature);
rc |= start_url_load(boot_task, tmp);
}
if (initrd) {
- initrd_sig = gpg_get_signature_url(ctx, initrd);
+ initrd_sig = get_signature_url(ctx, initrd);
tmp = add_boot_resource(boot_task,
_("initrd signature"), initrd_sig,
&boot_task->local_initrd_signature);
rc |= start_url_load(boot_task, tmp);
}
if (dtb) {
- dtb_sig = gpg_get_signature_url(ctx, dtb);
+ dtb_sig = get_signature_url(ctx, dtb);
tmp = add_boot_resource(boot_task,
_("dtb signature"), dtb_sig,
&boot_task->local_dtb_signature);