diff --git a/tlbmc/utils/fram_utils.cc b/tlbmc/utils/fram_utils.cc
index 6570b35..166f80f 100644
--- a/tlbmc/utils/fram_utils.cc
+++ b/tlbmc/utils/fram_utils.cc
@@ -1,5 +1,6 @@
 #include "tlbmc/utils/fram_utils.h"
 
+#include <cstddef>
 #include <cstdint>
 #include <memory>
 #include <string>
@@ -58,11 +59,20 @@
     }
   }
 
+  const bool last_line_is_complete =
+      !content.empty() && content.back() == '\n';
+
   // Split the content into lines.
   std::vector<absl::string_view> lines = absl::StrSplit(content, '\n');
 
+  // If the last line is not complete, it's likely truncated, so discard it.
+  if (!last_line_is_complete && !lines.empty()) {
+    lines.pop_back();
+  }
+
   // Iterate through each line to find relevant information.
-  for (const auto& line : lines) {
+  for (size_t i = 0; i < lines.size(); ++i) {
+    absl::string_view line = lines[i];
     absl::string_view trimmed_line = absl::StripAsciiWhitespace(line);
     // We only care about lines that start with "INFO:".
     if (!absl::StartsWith(trimmed_line, "INFO:")) {
@@ -83,9 +93,12 @@
     if (module == "Linux") {
       // Handle Linux:Board Serial Number: <value>
       if (absl::StartsWith(message, kBoardSerialNumberKey)) {
-        parsed_data.board_serial_number =
+        const std::string board_serial_number =
             std::string(absl::StripAsciiWhitespace(
                 message.substr(kBoardSerialNumberKey.length())));
+        if (!board_serial_number.empty()) {
+          parsed_data.board_serial_number = board_serial_number;
+        }
       }
       continue;
     }
@@ -93,8 +106,12 @@
     if (module == "Bootloader") {
       // Handle Bootloader:Board Information: <value>
       if (absl::StartsWith(message, kBoardInfoKey)) {
-        parsed_data.board_info = std::string(
+        const std::string board_info_str = std::string(
             absl::StripAsciiWhitespace(message.substr(kBoardInfoKey.length())));
+
+        if (!board_info_str.empty()) {
+          parsed_data.board_info = board_info_str;
+        }
         // Attempt to extract the product name from the Board Information.
         // This assumes the product name is the first word in the Board
         // Information string. This is based on the observed format:
@@ -104,8 +121,8 @@
         // Example: "EBB6100 board revision major:1, minor:0, serial #: unknown"
         // Here, "EBB6100" is the product name.
         std::vector<std::string> board_parts =
-            absl::StrSplit(parsed_data.board_info, ' ');
-        if (!board_parts.empty()) {
+            absl::StrSplit(parsed_data.board_info, ' ', absl::SkipWhitespace());
+        if (!board_parts.empty() && !board_parts[0].empty()) {
           parsed_data.board_product_name = board_parts[0];
         }
       }
