Merge "platform: msm_shared: Fix broadcast mode configuration"
diff --git a/platform/msm_shared/image_verify.c b/platform/msm_shared/image_verify.c
index edca3bc..0d280f2 100644
--- a/platform/msm_shared/image_verify.c
+++ b/platform/msm_shared/image_verify.c
@@ -115,10 +115,12 @@
/*
* Decrypt the pre-calculated expected image hash.
+ * Return value, ret should be equal to hash_size. Otherwise it means a failure. With this check
+ * we avoid a potential vulnerability due to trailing data placed at the end of digest.
*/
ret = image_decrypt_signature(signature_ptr, plain_text);
- if (ret == -1) {
- dprintf(CRITICAL, "ERROR: Image Invalid! Decryption failed!\n");
+ if (ret != hash_size) {
+ dprintf(CRITICAL, "ERROR: Image Invalid! signature check failed! ret %d\n", ret);
goto cleanup;
}
diff --git a/platform/msm_shared/include/mmc_wrapper.h b/platform/msm_shared/include/mmc_wrapper.h
index 6d8f980..79f0442 100644
--- a/platform/msm_shared/include/mmc_wrapper.h
+++ b/platform/msm_shared/include/mmc_wrapper.h
@@ -30,7 +30,7 @@
#define __MMC_WRAPPER_H__
#include <mmc_sdhci.h>
-
+#define BOARD_KERNEL_PAGESIZE 2048
/* Wrapper APIs */
struct mmc_device *get_mmc_device();
@@ -42,4 +42,5 @@
uint64_t mmc_get_device_capacity(void);
uint32_t mmc_erase_card(uint64_t addr, uint64_t len);
uint32_t mmc_get_device_blocksize();
+uint32_t mmc_page_size();
#endif
diff --git a/platform/msm_shared/mmc_wrapper.c b/platform/msm_shared/mmc_wrapper.c
index bfbdf95..d516738 100644
--- a/platform/msm_shared/mmc_wrapper.c
+++ b/platform/msm_shared/mmc_wrapper.c
@@ -337,3 +337,14 @@
return card->block_size;
}
+
+/*
+ * Function: storage page size
+ * Arg : None
+ * Return : Returns the page size for the card
+ * Flow : Get the page size for storage
+ */
+uint32_t mmc_page_size()
+{
+ return BOARD_KERNEL_PAGESIZE;
+}