diff --git a/fw-update/update_manager.cpp b/fw-update/update_manager.cpp
index 66539d5..946efb3 100644
--- a/fw-update/update_manager.cpp
+++ b/fw-update/update_manager.cpp
@@ -76,20 +76,8 @@
     }
 
     package.seekg(0);
-    std::vector<uint8_t> packageHeader(sizeof(pldm_package_header_information));
-    package.read(reinterpret_cast<char*>(packageHeader.data()),
-                 sizeof(pldm_package_header_information));
-
-    auto pkgHeaderInfo =
-        reinterpret_cast<const pldm_package_header_information*>(
-            packageHeader.data());
-    auto pkgHeaderInfoSize = sizeof(pldm_package_header_information) +
-                             pkgHeaderInfo->package_version_string_length;
-    packageHeader.clear();
-    packageHeader.resize(pkgHeaderInfoSize);
-    package.seekg(0);
-    package.read(reinterpret_cast<char*>(packageHeader.data()),
-                 pkgHeaderInfoSize);
+    std::vector<uint8_t> packageHeader(packageSize);
+    package.read(reinterpret_cast<char*>(packageHeader.data()), packageSize);
 
     parser = parsePkgHeader(packageHeader);
     if (parser == nullptr)
@@ -105,9 +93,6 @@
     objPath = swRootPath + std::to_string(versionHash);
 
     package.seekg(0);
-    packageHeader.resize(parser->pkgHeaderSize);
-    package.read(reinterpret_cast<char*>(packageHeader.data()),
-                 parser->pkgHeaderSize);
     try
     {
         parser->parse(packageHeader, packageSize);
