firmware-utils/tplink-safeloader: make vendor data optional
authorJo-Philipp Wich <jo@mein.io>
Wed, 24 Aug 2016 07:30:56 +0000 (09:30 +0200)
committerMatthias Schiffer <mschiffer@universe-factory.net>
Tue, 20 Dec 2016 13:38:47 +0000 (14:38 +0100)
Restructure the code a bit to allow for omitting vendor data when generating
factory images.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
tools/firmware-utils/src/tplink-safeloader.c

index 2dedaa656cd88d874ab9ff8906a1b3ee14760dd3..7fb5e895301bd7a9f157615c58403dc94436deac 100644 (file)
@@ -449,10 +449,6 @@ static void put_partitions(uint8_t *buffer, const struct image_partition_entry *
 
                base += parts[i].size;
        }
-
-       image_pt++;
-
-       memset(image_pt, 0xff, end-image_pt);
 }
 
 /** Generates and writes the image MD5 checksum */
@@ -492,12 +488,14 @@ static void * generate_factory_image(const char *vendor, const struct image_part
        if (!image)
                error(1, errno, "malloc");
 
+       memset(image, 0xff, *len);
        put32(image, *len);
 
-       size_t vendor_len = strlen(vendor);
-       put32(image+0x14, vendor_len);
-       memcpy(image+0x18, vendor, vendor_len);
-       memset(image+0x18+vendor_len, 0xff, 4092-vendor_len);
+       if (vendor) {
+               size_t vendor_len = strlen(vendor);
+               put32(image+0x14, vendor_len);
+               memcpy(image+0x18, vendor, vendor_len);
+       }
 
        put_partitions(image + 0x1014, parts);
        put_md5(image+0x04, image+0x14, *len-0x14);