From: Rafał Miłecki <[email protected]>

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 <[email protected]>
---
 tools/env/fw_env.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
index c69da0b926a..fcbe09ea981 100644
--- a/tools/env/fw_env.c
+++ b/tools/env/fw_env.c
@@ -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;
                }
 
-- 
2.51.0

Reply via email to