]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
fw_env: allocate buffer of proper size in flash_write_buf()
authorRafał Miłecki <rafal@milecki.pl>
Sat, 21 Feb 2026 10:00:07 +0000 (11:00 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 6 Mar 2026 16:32:41 +0000 (10:32 -0600)
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>
tools/env/fw_env.c

index c69da0b926ad19fae2b1145312e88da625eb2bc5..fcbe09ea98119ac214417ff6ae4de3e1410875bb 100644 (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;
                }