Merge "Measured Boot Driver: Fix MISRA-C 2012 defects" into integration
diff --git a/drivers/measured_boot/event_log.c b/drivers/measured_boot/event_log.c
index 0042c96..727bdf5 100644
--- a/drivers/measured_boot/event_log.c
+++ b/drivers/measured_boot/event_log.c
@@ -147,13 +147,14 @@
 	((tpml_digest_values *)ptr)->count = HASH_ALG_COUNT;
 
 	/* TCG_PCR_EVENT2.Digests[] */
-	ptr = (uint8_t *)ptr + offsetof(tpml_digest_values, digests);
+	ptr = (uint8_t *)((uintptr_t)ptr +
+			offsetof(tpml_digest_values, digests));
 
 	/* TCG_PCR_EVENT2.Digests[].AlgorithmId */
 	((tpmt_ha *)ptr)->algorithm_id = TPM_ALG_ID;
 
 	/* TCG_PCR_EVENT2.Digests[].Digest[] */
-	ptr = (uint8_t *)ptr + offsetof(tpmt_ha, digest);
+	ptr = (uint8_t *)((uintptr_t)ptr + offsetof(tpmt_ha, digest));
 
 	/* Check for space in Event Log buffer */
 	if (((uintptr_t)ptr + TCG_DIGEST_SIZE) > EVENT_LOG_END) {
@@ -170,7 +171,7 @@
 	}
 
 	/* TCG_PCR_EVENT2.EventSize */
-	ptr = (uint8_t *)ptr + TCG_DIGEST_SIZE;
+	ptr = (uint8_t *)((uintptr_t)ptr + TCG_DIGEST_SIZE);
 	((event2_data_t *)ptr)->event_size = name_len;
 
 	/* Copy event data to TCG_PCR_EVENT2.Event */
@@ -178,7 +179,8 @@
 			(const void *)image_ptr->name, name_len);
 
 	/* End of event data */
-	log_ptr = (uint8_t *)ptr + offsetof(event2_data_t, event) + name_len;
+	log_ptr = (uint8_t *)((uintptr_t)ptr +
+			offsetof(event2_data_t, event) + name_len);
 
 	return 0;
 }
@@ -205,19 +207,20 @@
 	 */
 	(void)memcpy(ptr, (const void *)&id_event_header,
 			sizeof(id_event_header));
-	ptr = (uint8_t *)ptr + sizeof(id_event_header);
+	ptr = (uint8_t *)((uintptr_t)ptr + sizeof(id_event_header));
 
 	/* TCG_EfiSpecIdEventAlgorithmSize structure */
 	((id_event_algorithm_size_t *)ptr)->algorithm_id = TPM_ALG_ID;
 	((id_event_algorithm_size_t *)ptr)->digest_size = TCG_DIGEST_SIZE;
-	ptr = (uint8_t *)ptr + sizeof(id_event_algorithm_size_t);
+	ptr = (uint8_t *)((uintptr_t)ptr + sizeof(id_event_algorithm_size_t));
 
 	/*
 	 * TCG_EfiSpecIDEventStruct.vendorInfoSize
 	 * No vendor data
 	 */
 	((id_event_struct_data_t *)ptr)->vendor_info_size = 0;
-	ptr = (uint8_t *)ptr + offsetof(id_event_struct_data_t, vendor_info);
+	ptr = (uint8_t *)((uintptr_t)ptr +
+			offsetof(id_event_struct_data_t, vendor_info));
 	if ((uintptr_t)ptr != ((uintptr_t)event_log + ID_EVENT_SIZE)) {
 		panic();
 	}
@@ -234,19 +237,20 @@
 	/* Copy Startup Locality Event Header */
 	(void)memcpy(ptr, (const void *)&locality_event_header,
 			sizeof(locality_event_header));
-	ptr = (uint8_t *)ptr + sizeof(locality_event_header);
+	ptr = (uint8_t *)((uintptr_t)ptr + sizeof(locality_event_header));
 
 	/* TCG_PCR_EVENT2.Digests[].AlgorithmId */
 	((tpmt_ha *)ptr)->algorithm_id = TPM_ALG_ID;
 
 	/* TCG_PCR_EVENT2.Digests[].Digest[] */
 	(void)memset(&((tpmt_ha *)ptr)->digest, 0, TPM_ALG_ID);
-	ptr = (uint8_t *)ptr + offsetof(tpmt_ha, digest) + TCG_DIGEST_SIZE;
+	ptr = (uint8_t *)((uintptr_t)ptr +
+			offsetof(tpmt_ha, digest) + TCG_DIGEST_SIZE);
 
 	/* TCG_PCR_EVENT2.EventSize */
 	((event2_data_t *)ptr)->event_size =
 		(uint32_t)sizeof(startup_locality_event_t);
-	ptr = (uint8_t *)ptr + offsetof(event2_data_t, event);
+	ptr = (uint8_t *)((uintptr_t)ptr + offsetof(event2_data_t, event));
 
 	/* TCG_EfiStartupLocalityEvent.Signature */
 	(void)memcpy(ptr, (const void *)locality_signature,
@@ -257,7 +261,7 @@
 	 * the platform's boot firmware
 	 */
 	((startup_locality_event_t *)ptr)->startup_locality = 0U;
-	ptr = (uint8_t *)ptr + sizeof(startup_locality_event_t);
+	ptr = (uint8_t *)((uintptr_t)ptr + sizeof(startup_locality_event_t));
 	if ((uintptr_t)ptr != ((uintptr_t)start_ptr + LOC_EVENT_SIZE)) {
 		panic();
 	}
diff --git a/drivers/measured_boot/event_print.c b/drivers/measured_boot/event_print.c
index ed970b8..84ed4b1 100644
--- a/drivers/measured_boot/event_print.c
+++ b/drivers/measured_boot/event_print.c
@@ -28,7 +28,7 @@
 	uint32_t event_size, number_of_algorithms;
 	size_t digest_len;
 #if ENABLE_ASSERTIONS
-	const uint8_t *end_ptr = *log_addr + *log_size;
+	const uint8_t *end_ptr = (uint8_t *)((uintptr_t)*log_addr + *log_size);
 	bool valid = true;
 #endif
 
@@ -90,7 +90,7 @@
 
 	/* Size of DigestSizes[] */
 	digest_len = number_of_algorithms * sizeof(id_event_algorithm_size_t);
-	assert(((uint8_t *)alg_ptr + digest_len) <= end_ptr);
+	assert(((uintptr_t)alg_ptr + digest_len) <= (uintptr_t)end_ptr);
 
 	LOG_EVENT("  DigestSizes        :\n");
 	for (i = 0U; i < number_of_algorithms; ++i) {
@@ -118,14 +118,14 @@
 	}
 
 	/* Address of VendorInfoSize */
-	info_size_ptr = (uint8_t *)alg_ptr + digest_len;
-	assert(info_size_ptr <= end_ptr);
+	info_size_ptr = (uint8_t *)((uintptr_t)alg_ptr + digest_len);
+	assert((uintptr_t)info_size_ptr <= (uintptr_t)end_ptr);
 
 	info_size = *info_size_ptr++;
 	LOG_EVENT("  VendorInfoSize     : %u\n", info_size);
 
 	/* Check VendorInfo end address */
-	assert((info_size_ptr + info_size) <= end_ptr);
+	assert(((uintptr_t)info_size_ptr + info_size) <= (uintptr_t)end_ptr);
 
 	/* Check EventSize */
 	assert(event_size == (sizeof(id_event_struct_t) +
@@ -154,7 +154,7 @@
 	size_t sha_size, digests_size = 0U;
 	void *ptr = *log_addr;
 #if ENABLE_ASSERTIONS
-	const uint8_t *end_ptr = *log_addr + *log_size;
+	const uint8_t *end_ptr = (uint8_t *)((uintptr_t)*log_addr + *log_size);
 #endif
 
 	assert(*log_size >= sizeof(event2_header_t));
@@ -174,7 +174,8 @@
 
 	for (unsigned int i = 0U; i < count; ++i) {
 		/* Check AlgorithmId address */
-		assert(((uint8_t *)ptr + offsetof(tpmt_ha, digest)) <= end_ptr);
+		assert(((uintptr_t)ptr +
+			offsetof(tpmt_ha, digest)) <= (uintptr_t)end_ptr);
 
 		LOG_EVENT("    #%u AlgorithmId   : SHA", i);
 		switch (((tpmt_ha *)ptr)->algorithm_id) {
@@ -198,8 +199,8 @@
 		}
 
 		/* End of Digest[] */
-		ptr = (uint8_t *)ptr + offsetof(tpmt_ha, digest);
-		assert(((uint8_t *)ptr + sha_size) <= end_ptr);
+		ptr = (uint8_t *)((uintptr_t)ptr + offsetof(tpmt_ha, digest));
+		assert(((uintptr_t)ptr + sha_size) <= (uintptr_t)end_ptr);
 
 		/* Total size of all digests */
 		digests_size += sha_size;
@@ -217,16 +218,16 @@
 	}
 
 	/* TCG_PCR_EVENT2.EventSize */
-	assert(((uint8_t *)ptr + offsetof(event2_data_t, event)) <= end_ptr);
+	assert(((uintptr_t)ptr + offsetof(event2_data_t, event)) <= (uintptr_t)end_ptr);
 
 	event_size = ((event2_data_t *)ptr)->event_size;
 	LOG_EVENT("  EventSize          : %u\n", event_size);
 
 	/* Address of TCG_PCR_EVENT2.Event[EventSize] */
-	ptr = (uint8_t *)ptr + offsetof(event2_data_t, event);
+	ptr = (uint8_t *)((uintptr_t)ptr + offsetof(event2_data_t, event));
 
 	/* End of TCG_PCR_EVENT2.Event[EventSize] */
-	assert(((uint8_t *)ptr + event_size) <= end_ptr);
+	assert(((uintptr_t)ptr + event_size) <= (uintptr_t)end_ptr);
 
 	if ((event_size == sizeof(startup_locality_event_t)) &&
 	     (strcmp((const char *)ptr, TCG_STARTUP_LOCALITY_SIGNATURE) == 0)) {