By using localtime() to determine the timestamp that goes into factory
images, the resulting image depends on the timezone of the build system.
Use gmtime() instead, which results in more reproducible images.

Signed-off-by: Sander Vanheule <san...@svanheule.net>
---
Tested by building factory images with tplink-safeloader

 tools/firmware-utils/src/addpattern.c        | 2 +-
 tools/firmware-utils/src/tplink-safeloader.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/firmware-utils/src/addpattern.c 
b/tools/firmware-utils/src/addpattern.c
index 9bc4865335..9791527878 100644
--- a/tools/firmware-utils/src/addpattern.c
+++ b/tools/firmware-utils/src/addpattern.c
@@ -296,7 +296,7 @@ int main(int argc, char **argv)
                return EXIT_FAILURE;
        }
 
-       ptm = localtime(&t);
+       ptm = gmtime(&t);
 
        if (3 != sscanf(version, "v%d.%d.%d", &v0, &v1, &v2)) {
                fprintf(stderr, "bad version string \"%s\"\n", version);
diff --git a/tools/firmware-utils/src/tplink-safeloader.c 
b/tools/firmware-utils/src/tplink-safeloader.c
index a5f3ced16d..0af1fe4c6e 100644
--- a/tools/firmware-utils/src/tplink-safeloader.c
+++ b/tools/firmware-utils/src/tplink-safeloader.c
@@ -2079,7 +2079,7 @@ static struct image_partition_entry 
make_soft_version(uint32_t rev) {
        else if (time(&t) == (time_t)(-1))
                error(1, errno, "time");
 
-       struct tm *tm = localtime(&t);
+       struct tm *tm = gmtime(&t);
 
        s->magic = htonl(0x0000000c);
        s->zero = 0;
-- 
2.26.2


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to