From a323b4537348faa8ab7049993ac2259a6c149be1 Mon Sep 17 00:00:00 2001 From: Tad Date: Mon, 25 Dec 2023 14:10:40 -0500 Subject: [PATCH] Show the approximate signature count Signed-off-by: Tad --- app/src/main/java/us/spotco/malwarescanner/Database.java | 9 ++++++++- .../java/us/spotco/malwarescanner/MalwareScanner.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/us/spotco/malwarescanner/Database.java b/app/src/main/java/us/spotco/malwarescanner/Database.java index 629bc86..b0ff6dc 100644 --- a/app/src/main/java/us/spotco/malwarescanner/Database.java +++ b/app/src/main/java/us/spotco/malwarescanner/Database.java @@ -50,6 +50,7 @@ class Database { public static BloomFilter signaturesMD5 = null; public static BloomFilter signaturesSHA1 = null; public static BloomFilter signaturesSHA256 = null; + public static long signaturesCount = 0; private static final DateFormat dateFormat = DateFormat.getDateInstance(); @@ -64,7 +65,10 @@ class Database { } public static boolean isDatabaseLoaded() { - return areDatabasesAvailable() && !isDatabaseLoading(); + return areDatabasesAvailable() && !isDatabaseLoading() + && signaturesMD5 != null && signaturesMD5.approximateElementCount() > 0 + && signaturesSHA1 != null && signaturesSHA1.approximateElementCount() > 0 + && signaturesSHA256 != null && signaturesSHA256.approximateElementCount() > 0; } public static boolean isDatabaseLoading() { @@ -122,14 +126,17 @@ class Database { case "hypatia-md5-bloom.bin": Log.d("Hypatia", "Processing md5"); signaturesMD5 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(StandardCharsets.US_ASCII)); + signaturesCount += signaturesMD5.approximateElementCount(); break; case "hypatia-sha1-bloom.bin": Log.d("Hypatia", "Processing sha1"); signaturesSHA1 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(StandardCharsets.US_ASCII)); + signaturesCount += signaturesSHA1.approximateElementCount(); break; case "hypatia-sha256-bloom.bin": Log.d("Hypatia", "Processing sha256"); signaturesSHA256 = BloomFilter.readFrom(databaseLoading, Funnels.stringFunnel(StandardCharsets.US_ASCII)); + signaturesCount += signaturesSHA256.approximateElementCount(); break; } databaseLoading.close(); diff --git a/app/src/main/java/us/spotco/malwarescanner/MalwareScanner.java b/app/src/main/java/us/spotco/malwarescanner/MalwareScanner.java index cf4245d..47d54dc 100644 --- a/app/src/main/java/us/spotco/malwarescanner/MalwareScanner.java +++ b/app/src/main/java/us/spotco/malwarescanner/MalwareScanner.java @@ -184,7 +184,7 @@ class MalwareScanner extends AsyncTask, Object, String> { } } if (Database.isDatabaseLoaded()) { - publishProgress("\t" + context.getString(R.string.main_database_loaded, "?") + "\n", true); + publishProgress("\t" + context.getString(R.string.main_database_loaded, String.valueOf(Database.signaturesCount)) + "\n", true); //Perform a self-test if (Database.selfTest()) {