Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Unified Diff: src/platform/vboot_reference/vkernel/kernel_image.c

Issue 1752013: Vboot Reference: Make kernel signing utility more flexible. (Closed)
Patch Set: review fixes Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/platform/vboot_reference/vkernel/include/kernel_image.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/platform/vboot_reference/vkernel/kernel_image.c
diff --git a/src/platform/vboot_reference/vkernel/kernel_image.c b/src/platform/vboot_reference/vkernel/kernel_image.c
index 8c8c09221113c57f4e7a6ada39b222635bc392ea..cc184673692bb2a61773a304474c50ccd9efca3c 100644
--- a/src/platform/vboot_reference/vkernel/kernel_image.c
+++ b/src/platform/vboot_reference/vkernel/kernel_image.c
@@ -29,6 +29,7 @@ KernelImage* KernelImageNew(void) {
if (image) {
image->kernel_sign_key = NULL;
image->kernel_key_signature = NULL;
+ Memset(image->options.cmd_line, 0, sizeof(image->options.cmd_line));
image->config_signature = NULL;
image->kernel_signature = NULL;
image->kernel_data = NULL;
@@ -298,8 +299,10 @@ uint8_t* GetKernelBlob(const KernelImage* image, uint64_t* blob_len) {
}
int WriteKernelImage(const char* input_file,
- const KernelImage* image) {
+ const KernelImage* image,
+ int is_only_vblock) {
int fd;
+ int success = 1;
uint8_t* kernel_blob;
uint64_t blob_len;
@@ -315,17 +318,24 @@ int WriteKernelImage(const char* input_file,
debug("Couldn't create kernel blob from KernelImage.\n");
return 0;
}
- if (blob_len != write(fd, kernel_blob, blob_len)) {
- debug("Couldn't write Kernel Image to file: %s\n",
+ if (!is_only_vblock) {
+ if (blob_len != write(fd, kernel_blob, blob_len)) {
+ debug("Couldn't write Kernel Image to file: %s\n",
input_file);
-
- Free(kernel_blob);
- close(fd);
- return 0;
+ success = 0;
+ }
+ } else {
+ /* Exclude the kernel_data. */
+ int vblock_len = blob_len - image->options.kernel_len;
+ if (vblock_len != write(fd, kernel_blob, vblock_len)) {
+ debug("Couldn't write Kernel Image Verification block to file: %s\n",
+ input_file);
+ success = 0;
+ }
}
Free(kernel_blob);
close(fd);
- return 1;
+ return success;
}
void PrintKernelImage(const KernelImage* image) {
« no previous file with comments | « src/platform/vboot_reference/vkernel/include/kernel_image.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698