Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7909d650 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Fixed a few minor nits in liblp"

parents 0182f71d c02be81e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -269,6 +269,11 @@ void MetadataBuilder::ImportExtents(Partition* dest, const LpMetadata& metadata,
}

static bool VerifyDeviceProperties(const BlockDeviceInfo& device_info) {
    if (device_info.logical_block_size == 0) {
        LERROR << "Block device " << device_info.partition_name
               << " logical block size must not be zero.";
        return false;
    }
    if (device_info.logical_block_size % LP_SECTOR_SIZE != 0) {
        LERROR << "Block device " << device_info.partition_name
               << " logical block size must be a multiple of 512.";
@@ -335,7 +340,7 @@ bool MetadataBuilder::Init(const std::vector<BlockDeviceInfo>& block_devices,
        out.alignment = device_info.alignment;
        out.alignment_offset = device_info.alignment_offset;
        out.size = device_info.size;
        if (device_info.partition_name.size() >= sizeof(out.partition_name)) {
        if (device_info.partition_name.size() > sizeof(out.partition_name)) {
            LERROR << "Partition name " << device_info.partition_name << " exceeds maximum length.";
            return false;
        }
+3 −3
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ typedef struct LpMetadataGeometry {
 * num_entries, and the result must not overflow a 32-bit signed integer.
 */
typedef struct LpMetadataTableDescriptor {
    /*  0: Location of the table, relative to the metadata header. */
    /*  0: Location of the table, relative to end of the metadata header. */
    uint32_t offset;
    /*  4: Number of entries in the table. */
    uint32_t num_entries;
@@ -272,7 +272,7 @@ typedef struct LpMetadataPartitionGroup {

    /* 40: Maximum size in bytes. If 0, the group has no maximum size. */
    uint64_t maximum_size;
} LpMetadataPartitionGroup;
} __attribute__((packed)) LpMetadataPartitionGroup;

/* This flag is only intended to be used with super_empty.img and super.img on
 * retrofit devices. If set, the group needs a slot suffix to be interpreted
@@ -323,7 +323,7 @@ typedef struct LpMetadataBlockDevice {

    /* 60: Flags (see LP_BLOCK_DEVICE_* flags below). */
    uint32_t flags;
} LpMetadataBlockDevice;
} __attribute__((packed)) LpMetadataBlockDevice;

/* This flag is only intended to be used with super_empty.img and super.img on
 * retrofit devices. On these devices there are A and B super partitions, and
+4 −0
Original line number Diff line number Diff line
@@ -256,6 +256,10 @@ static std::unique_ptr<LpMetadata> ParseMetadata(const LpMetadataGeometry& geome
            LERROR << "Logical partition has invalid attribute set.";
            return nullptr;
        }
        if (partition.first_extent_index + partition.num_extents < partition.first_extent_index) {
            LERROR << "Logical partition first_extent_index + num_extents overflowed.";
            return nullptr;
        }
        if (partition.first_extent_index + partition.num_extents > header.extents.num_entries) {
            LERROR << "Logical partition has invalid extent list.";
            return nullptr;
+2 −2
Original line number Diff line number Diff line
@@ -373,11 +373,11 @@ bool UpdatePartitionTable(const IPartitionOpener& opener, const std::string& sup
        // safety.
        std::string old_blob;
        if (!ValidateAndSerializeMetadata(opener, *backup.get(), slot_suffix, &old_blob)) {
            LERROR << "Error serializing primary metadata to repair corrupted backup";
            LERROR << "Error serializing backup metadata to repair corrupted primary";
            return false;
        }
        if (!WritePrimaryMetadata(fd, metadata, slot_number, old_blob, writer)) {
            LERROR << "Error writing primary metadata to repair corrupted backup";
            LERROR << "Error writing backup metadata to repair corrupted primary";
            return false;
        }
    }