Vboot Reference: Kernel Boot signing utility.

Fixes a unallocated memory bug in ReadKernelImage(). Some renaming of variables for consistency.

Review URL: http://codereview.chromium.org/669014
diff --git a/utils/firmware_utility.cc b/utils/firmware_utility.cc
index 2563fc8..2ac8250 100644
--- a/utils/firmware_utility.cc
+++ b/utils/firmware_utility.cc
@@ -93,7 +93,7 @@
       return false;
 
     if (0 == i) {
-      switch(option_index) {
+      switch (option_index) {
         case 0:  // root_key
           root_key_file_ = optarg;
           break;
@@ -101,26 +101,29 @@
           root_key_pub_file_ = optarg;
           break;
         case 2:  // firmware_sign_key
-          firmware_sign_key_file_ = optarg;
+          firmware_key_file_ = optarg;
           break;
         case 3:  // firmware_sign_key_pub
-          firmware_sign_key_pub_file_ = optarg;
+          firmware_key_pub_file_ = optarg;
           break;
         case 4:  // firmware_sign_algorithm
           errno = 0;  // strtol() returns an error via errno
-          firmware_sign_algorithm_ = strtol(optarg, (char**) NULL, 10);
+          firmware_sign_algorithm_ = strtol(optarg,
+                                            reinterpret_cast<char**>(NULL), 10);
           if (errno)
             return false;
           break;
         case 5:  // firmware_key_version
           errno = 0;
-          firmware_key_version_ = strtol(optarg, (char**) NULL, 10);
+          firmware_key_version_ = strtol(optarg,
+                                         reinterpret_cast<char**>(NULL), 10);
           if (errno)
             return false;
           break;
         case 6:  // firmware_version
           errno = 0;
-          firmware_version_ = strtol(optarg, (char**) NULL, 10);
+          firmware_version_ = strtol(optarg,
+                                     reinterpret_cast<char**>(NULL), 10);
           if (errno)
             return false;
           break;
@@ -163,28 +166,25 @@
   // Copy pre-processed public signing key.
   image_->firmware_sign_algorithm = (uint16_t) firmware_sign_algorithm_;
   image_->firmware_sign_key = BufferFromFile(
-      firmware_sign_key_pub_file_.c_str(),
+      firmware_key_pub_file_.c_str(),
       &firmware_sign_key_pub_len);
   if (!image_->firmware_sign_key)
     return false;
   image_->firmware_key_version = firmware_key_version_;
 
   // Update header length.
-  image_->header_len = (sizeof(image_->header_len) +
-                        sizeof(image_->firmware_sign_algorithm) +
-                        firmware_sign_key_pub_len +
-                        sizeof(image_->firmware_key_version) +
-                        sizeof(image_->header_checksum));
+  image_->header_len = GetFirmwareHeaderLen(image_);
 
   // Calculate header checksum.
   DigestInit(&ctx, SHA512_DIGEST_ALGORITHM);
-  DigestUpdate(&ctx, (uint8_t*) &image_->header_len,
+  DigestUpdate(&ctx, reinterpret_cast<uint8_t*>(&image_->header_len),
                sizeof(image_->header_len));
-  DigestUpdate(&ctx, (uint8_t*) &image_->firmware_sign_algorithm,
+  DigestUpdate(&ctx,
+               reinterpret_cast<uint8_t*>(&image_->firmware_sign_algorithm),
                sizeof(image_->firmware_sign_algorithm));
   DigestUpdate(&ctx, image_->firmware_sign_key,
                RSAProcessedKeySize(image_->firmware_sign_algorithm));
-  DigestUpdate(&ctx, (uint8_t*) &image_->firmware_key_version,
+  DigestUpdate(&ctx, reinterpret_cast<uint8_t*>(&image_->firmware_key_version),
                sizeof(image_->firmware_key_version));
   header_checksum = DigestFinal(&ctx);
   Memcpy(image_->header_checksum, header_checksum, SHA512_DIGEST_SIZE);
@@ -205,7 +205,7 @@
     return false;
   }
 
-  if (!AddFirmwareSignature(image_, firmware_sign_key_file_.c_str())) {
+  if (!AddFirmwareSignature(image_, firmware_key_file_.c_str())) {
     cerr << "Couldn't write firmware signature to verified boot image.\n";
     return false;
   }
@@ -226,7 +226,8 @@
     cerr << "Couldn't read firmware image or malformed image.\n";
     return false;
   }
-  if(!(error = VerifyFirmwareImage(root_key_pub_, image_, 0)))  // Trusted Mode.
+  if (!(error = VerifyFirmwareImage(root_key_pub_, image_,
+                                    0)))  // Trusted Mode.
     return true;
   cerr << VerifyFirmwareErrorString(error) << "\n";
   return false;;
@@ -257,11 +258,11 @@
       cerr << "Invalid or no firmware version specified." << "\n";
       return false;
     }
-    if (firmware_sign_key_file_.empty()) {
+    if (firmware_key_file_.empty()) {
       cerr << "No signing key file specified." << "\n";
       return false;
     }
-    if (firmware_sign_key_pub_file_.empty()) {
+    if (firmware_key_pub_file_.empty()) {
       cerr << "No pre-processed public signing key file specified." << "\n";
       return false;
     }
@@ -298,7 +299,7 @@
   }
   if (fu.is_verify()) {
     cerr << "Verification ";
-    if(fu.VerifySignedImage())
+    if (fu.VerifySignedImage())
       cerr << "SUCCESS.\n";
     else
       cerr << "FAILURE.\n";