From cef755387302a081aefed7bb3a1292c33d26deb4 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 20 Jul 2015 16:42:40 -0700 Subject: [PATCH] update: warn if APK has a date that is newer than the system clock If the date in an APK is in the future, that could cause confusion. If the system clock is wrong, then the APK will also have a date in the future. This is most likely on offline signing machines, since they do not have a time source to sync to. --- fdroidserver/update.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 5afa8758..17694f0d 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -27,6 +27,7 @@ import socket import zipfile import hashlib import pickle +from datetime import datetime, timedelta from xml.dom.minidom import Document from optparse import OptionParser import time @@ -542,6 +543,19 @@ def scan_apks(apps, apkcache, repodir, knownapks): apk = zipfile.ZipFile(apkfile, 'r') + # if an APK has files newer than the system time, suggest updating + # the system clock. This is useful for offline systems, used for + # signing, which do not have another source of clock sync info. It + # has to be more than 24 hours newer because ZIP/APK files do not + # store timezone info + info = apk.getinfo('AndroidManifest.xml') + dt_obj = datetime(*info.date_time) + checkdt = dt_obj - timedelta(1) + if datetime.today() < checkdt: + logging.warn('System clock is older than manifest in: ' + + apkfilename + '\nSet clock to that time using:\n' + + 'sudo date -s "' + str(dt_obj) + '"') + iconfilename = "%s.%s.png" % ( thisinfo['id'], thisinfo['versioncode'])