sdm845-common: gpt-utils: Replace libsparse.so with libz.so

This commit replaces sparse_crc32() with crc32() from libz.so because
libsparse.so won't be vendor available.

Bug: 38303202
Test: android builds
Change-Id: Ib318da74b5d55f729cbd40d9a62da53e6316fe7b
This commit is contained in:
Logan Chien 2017-05-17 15:36:58 +08:00 committed by LuK1337
parent 3d44710fb6
commit edf9d564c1

View file

@ -54,8 +54,8 @@
#include <log/log.h> #include <log/log.h>
#include <cutils/properties.h> #include <cutils/properties.h>
#include "gpt-utils.h" #include "gpt-utils.h"
#include "sparse_crc32.h"
#include <endian.h> #include <endian.h>
#include <zlib.h>
/****************************************************************************** /******************************************************************************
@ -338,7 +338,7 @@ static int gpt2_set_boot_chain(int fd, enum boot_chain boot)
if (r) if (r)
goto EXIT; goto EXIT;
crc = sparse_crc32(0, pentries, pentries_array_size); crc = crc32(0, pentries, pentries_array_size);
if (GET_4_BYTES(gpt_header + PARTITION_CRC_OFFSET) != crc) { if (GET_4_BYTES(gpt_header + PARTITION_CRC_OFFSET) != crc) {
fprintf(stderr, "Primary GPT partition entries array CRC invalid\n"); fprintf(stderr, "Primary GPT partition entries array CRC invalid\n");
r = -1; r = -1;
@ -361,12 +361,12 @@ static int gpt2_set_boot_chain(int fd, enum boot_chain boot)
goto EXIT; goto EXIT;
} }
crc = sparse_crc32(0, pentries, pentries_array_size); crc = crc32(0, pentries, pentries_array_size);
PUT_4_BYTES(gpt_header + PARTITION_CRC_OFFSET, crc); PUT_4_BYTES(gpt_header + PARTITION_CRC_OFFSET, crc);
/* header CRC is calculated with this field cleared */ /* header CRC is calculated with this field cleared */
PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0); PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0);
crc = sparse_crc32(0, gpt_header, gpt_header_size); crc = crc32(0, gpt_header, gpt_header_size);
PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, crc); PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, crc);
/* Write the modified GPT header back to block dev */ /* Write the modified GPT header back to block dev */
@ -438,7 +438,7 @@ static int gpt_get_state(int fd, enum gpt_instance gpt, enum gpt_state *state)
crc = GET_4_BYTES(gpt_header + HEADER_CRC_OFFSET); crc = GET_4_BYTES(gpt_header + HEADER_CRC_OFFSET);
/* header CRC is calculated with this field cleared */ /* header CRC is calculated with this field cleared */
PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0); PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0);
if (sparse_crc32(0, gpt_header, gpt_header_size) != crc) if (crc32(0, gpt_header, gpt_header_size) != crc)
*state = GPT_BAD_CRC; *state = GPT_BAD_CRC;
free(gpt_header); free(gpt_header);
return 0; return 0;
@ -507,7 +507,7 @@ static int gpt_set_state(int fd, enum gpt_instance gpt, enum gpt_state state)
/* header CRC is calculated with this field cleared */ /* header CRC is calculated with this field cleared */
PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0); PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0);
crc = sparse_crc32(0, gpt_header, gpt_header_size); crc = crc32(0, gpt_header, gpt_header_size);
PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, crc); PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, crc);
if (blk_rw(fd, 1, gpt_header_offset, gpt_header, blk_size)) { if (blk_rw(fd, 1, gpt_header_offset, gpt_header, blk_size)) {
@ -1383,13 +1383,13 @@ int gpt_disk_get_disk_info(const char *dev, struct gpt_disk *dsk)
goto error; goto error;
} }
gpt_header_size = GET_4_BYTES(disk->hdr + HEADER_SIZE_OFFSET); gpt_header_size = GET_4_BYTES(disk->hdr + HEADER_SIZE_OFFSET);
disk->hdr_crc = sparse_crc32(0, disk->hdr, gpt_header_size); disk->hdr_crc = crc32(0, disk->hdr, gpt_header_size);
disk->hdr_bak = gpt_get_header(dev, SECONDARY_GPT); disk->hdr_bak = gpt_get_header(dev, SECONDARY_GPT);
if (!disk->hdr_bak) { if (!disk->hdr_bak) {
ALOGE("%s: Failed to get backup header", __func__); ALOGE("%s: Failed to get backup header", __func__);
goto error; goto error;
} }
disk->hdr_bak_crc = sparse_crc32(0, disk->hdr_bak, gpt_header_size); disk->hdr_bak_crc = crc32(0, disk->hdr_bak, gpt_header_size);
//Descriptor for the block device. We will use this for further //Descriptor for the block device. We will use this for further
//modifications to the partition table //modifications to the partition table
@ -1469,11 +1469,11 @@ int gpt_disk_update_crc(struct gpt_disk *disk)
goto error; goto error;
} }
//Recalculate the CRC of the primary partiton array //Recalculate the CRC of the primary partiton array
disk->pentry_arr_crc = sparse_crc32(0, disk->pentry_arr_crc = crc32(0,
disk->pentry_arr, disk->pentry_arr,
disk->pentry_arr_size); disk->pentry_arr_size);
//Recalculate the CRC of the backup partition array //Recalculate the CRC of the backup partition array
disk->pentry_arr_bak_crc = sparse_crc32(0, disk->pentry_arr_bak_crc = crc32(0,
disk->pentry_arr_bak, disk->pentry_arr_bak,
disk->pentry_arr_size); disk->pentry_arr_size);
//Update the partition CRC value in the primary GPT header //Update the partition CRC value in the primary GPT header
@ -1486,8 +1486,8 @@ int gpt_disk_update_crc(struct gpt_disk *disk)
//Header CRC is calculated with its own CRC field set to 0 //Header CRC is calculated with its own CRC field set to 0
PUT_4_BYTES(disk->hdr + HEADER_CRC_OFFSET, 0); PUT_4_BYTES(disk->hdr + HEADER_CRC_OFFSET, 0);
PUT_4_BYTES(disk->hdr_bak + HEADER_CRC_OFFSET, 0); PUT_4_BYTES(disk->hdr_bak + HEADER_CRC_OFFSET, 0);
disk->hdr_crc = sparse_crc32(0, disk->hdr, gpt_header_size); disk->hdr_crc = crc32(0, disk->hdr, gpt_header_size);
disk->hdr_bak_crc = sparse_crc32(0, disk->hdr_bak, gpt_header_size); disk->hdr_bak_crc = crc32(0, disk->hdr_bak, gpt_header_size);
PUT_4_BYTES(disk->hdr + HEADER_CRC_OFFSET, disk->hdr_crc); PUT_4_BYTES(disk->hdr + HEADER_CRC_OFFSET, disk->hdr_crc);
PUT_4_BYTES(disk->hdr_bak + HEADER_CRC_OFFSET, disk->hdr_bak_crc); PUT_4_BYTES(disk->hdr_bak + HEADER_CRC_OFFSET, disk->hdr_bak_crc);
return 0; return 0;