From ae65a2a609d4a39f84b9808cac30ab623f3d0693 Mon Sep 17 00:00:00 2001 From: Juho Eskeli Date: Wed, 26 Sep 2018 22:43:27 +0300 Subject: [PATCH] Align writes to blockdevice write size in MBRBlockDevice --- features/storage/blockdevice/MBRBlockDevice.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/features/storage/blockdevice/MBRBlockDevice.cpp b/features/storage/blockdevice/MBRBlockDevice.cpp index e98152fea1..0d7e14ca28 100644 --- a/features/storage/blockdevice/MBRBlockDevice.cpp +++ b/features/storage/blockdevice/MBRBlockDevice.cpp @@ -73,6 +73,12 @@ static int partition_absolute( { // Allocate smallest buffer necessary to write MBR uint32_t buffer_size = std::max(bd->get_program_size(), sizeof(struct mbr_table)); + + // Prevent alignment issues + if(buffer_size % bd->get_program_size() != 0) { + buffer_size += bd->get_program_size() - (buffer_size % bd->get_program_size()); + } + uint8_t *buffer = new uint8_t[buffer_size]; // Check for existing MBR