fw_env: allocate buffer of proper size in flash_write_buf()

When dealing with env data not aligned to flash blocks flash_write_buf()
has to use an extra buffer. It reads existing flash content to it,
modifies required part and writes it back.

While reading and writing a size stored in "write_total" is used. It's
what should be used when allocating the buffer too.

In some cases allocating memory of "erase_len" size could result in
allocating too big buffer. That wouldn't break anything but it was
making code less intuitive.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
Rafał Miłecki
2026-03-06 10:32:41 -06:00
committed by Tom Rini
parent 1197954d58
commit d80d88cb87
+2 -2
View File
@@ -1037,11 +1037,11 @@ static int flash_write_buf(int dev, int fd, void *buf, size_t count)
* block back again.
*/
if (write_total > count) {
data = malloc(erase_len);
data = malloc(write_total);
if (!data) {
fprintf(stderr,
"Cannot malloc %zu bytes: %s\n",
erase_len, strerror(errno));
write_total, strerror(errno));
return -1;
}