diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiHealthService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiHealthService.java index 7fc56e897..66b12f8ed 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiHealthService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiHealthService.java @@ -845,6 +845,10 @@ public class XiaomiHealthService extends AbstractXiaomiService { while (buf.position() < buf.limit()) { final XiaomiActivityFileId fileId = XiaomiActivityFileId.from(buf); LOG.debug("Got activity to fetch: {}", fileId); + if (fileId.getTimestamp().getTime() == 0 && fileId.getVersion() == 0) { + LOG.warn("Skipping invalid file with no timestamp and version"); + continue; + } fileIds.add(fileId); } activityFetcher.fetch(fileIds); diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileIdTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileIdTest.java index f214d0f10..9f750fcc4 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileIdTest.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileIdTest.java @@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.xiaomi.activity; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -80,4 +81,10 @@ public class XiaomiActivityFileIdTest { assertArrayEquals(bytes, bufEncode.array()); } + + @Test + public void testZero() { + final XiaomiActivityFileId fileId = XiaomiActivityFileId.from(new byte[]{0, 0, 0, 0, 0, 0, 0}); + assertTrue(fileId.getTimestamp().getTime() == 0 && fileId.getVersion() == 0); + } }