diff --git a/src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp b/src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp index 78461ad94d..024b8f21e9 100644 --- a/src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp +++ b/src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -62,7 +63,7 @@ PackageFileHeapAccessorBase::OffsetArray::InitChunksOffsets( uint64 offset = (*this)[baseIndex]; for (size_t i = 0; i < chunkCount; i++) { - offset += (uint64)chunkSizes[i] + 1; + offset += (uint64)B_BENDIAN_TO_HOST_INT16(chunkSizes[i]) + 1; // the stored value is chunkSize - 1 size_t index = baseIndex + i + 1; // (baseIndex + i) is the index of the chunk whose size is stored in diff --git a/src/kits/package/hpkg/PackageFileHeapWriter.cpp b/src/kits/package/hpkg/PackageFileHeapWriter.cpp index 7bf45fa1b4..d4a12e46e7 100644 --- a/src/kits/package/hpkg/PackageFileHeapWriter.cpp +++ b/src/kits/package/hpkg/PackageFileHeapWriter.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -439,8 +440,8 @@ PackageFileHeapWriter::Finish() for (ssize_t i = 0; i < toWrite; i++, offsetIndex++) { // store chunkSize - 1, so it fits 16 bit (chunks cannot be empty) - buffer[i] = uint16(fOffsets[offsetIndex] - fOffsets[offsetIndex - 1] - - 1); + buffer[i] = B_HOST_TO_BENDIAN_INT16( + uint16(fOffsets[offsetIndex] - fOffsets[offsetIndex - 1] - 1)); } error = _WriteDataUncompressed(buffer, toWrite * 2);