* The fixes need to be applied via {@link #apply()} before any use of Java
* Cryptography Architecture primitives. A good place to invoke them is in the
* application's {@code onCreate}.
+ *
+ * @see Some SecureRandom Thoughts
*/
public final class PRNGFixes {
private static final byte[] BUILD_FINGERPRINT_AND_DEVICE_SERIAL =
- getBuildFingerprintAndDeviceSerial();
+ getBuildFingerprintAndDeviceSerial();
- /** Hidden constructor to prevent instantiation. */
- private PRNGFixes() { }
+ /**
+ * Hidden constructor to prevent instantiation.
+ */
+ private PRNGFixes() {
+ }
/**
* Applies all fixes.
@@ -131,7 +137,7 @@ public final class PRNGFixes {
rng2.getProvider().getClass())) {
throw new SecurityException(
"SecureRandom.getInstance(\"SHA1PRNG\") backed by wrong"
- + " Provider: " + rng2.getProvider().getClass());
+ + " Provider: " + rng2.getProvider().getClass());
}
}
@@ -146,7 +152,7 @@ public final class PRNGFixes {
super("LinuxPRNG",
1.0,
"A Linux-specific random number provider that uses"
- + " /dev/urandom");
+ + " /dev/urandom");
// Although /dev/urandom is not a SHA-1 PRNG, some apps
// explicitly request a SHA1PRNG SecureRandom and we thus need to
// prevent them from getting the default implementation whose output
@@ -300,6 +306,7 @@ public final class PRNGFixes {
}
}
+ @SuppressLint("HardwareIds")
private static byte[] getBuildFingerprintAndDeviceSerial() {
StringBuilder result = new StringBuilder();
String fingerprint = Build.FINGERPRINT;
diff --git a/app/src/main/java/org/fdroid/fdroid/data/ApkProvider.java b/app/src/main/java/org/fdroid/fdroid/data/ApkProvider.java
index c8c41fc50..d89eb0a68 100644
--- a/app/src/main/java/org/fdroid/fdroid/data/ApkProvider.java
+++ b/app/src/main/java/org/fdroid/fdroid/data/ApkProvider.java
@@ -335,7 +335,7 @@ public class ApkProvider extends FDroidProvider {
antiFeaturesRequested = true;
addAntiFeatures();
} else if (field.equals(Cols._ID)) {
- appendField("rowid", "apk", "_id");
+ appendField(Cols.ROW_ID, "apk", Cols._ID);
} else if (field.equals(Cols._COUNT)) {
appendField("COUNT(*) AS " + Cols._COUNT);
} else if (field.equals(Cols._COUNT_DISTINCT)) {
diff --git a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java
index 727aa9d81..6283ca3d2 100644
--- a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java
+++ b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java
@@ -692,19 +692,6 @@ public class AppProvider extends FDroidProvider {
return new AppQuerySelection(selection, args).add(queryPackageName(packageName));
}
- /**
- * Same as {@link AppProvider#querySingle(String, long)} except it is used for the purpose
- * of an UPDATE query rather than a SELECT query. This means that it must use a subquery to get
- * the {@link Cols.Package#PACKAGE_ID} rather than the join which is already in place for that
- * table. The reason is because UPDATE queries cannot include joins in SQLite.
- */
- protected AppQuerySelection querySingleForUpdate(String packageName, long repoId) {
- final String selection = Cols.PACKAGE_ID + " = (" + getPackageIdFromPackageNameQuery() +
- ") AND " + Cols.REPO_ID + " = ? ";
- final String[] args = {packageName, Long.toString(repoId)};
- return new AppQuerySelection(selection, args);
- }
-
private AppQuerySelection queryExcludeSwap() {
// fdroid_repo will have null fields if the LEFT JOIN didn't resolve, e.g. due to there
// being no apks for the app in the result set. In that case, we can't tell if it is from
diff --git a/app/src/main/java/org/fdroid/fdroid/data/QueryBuilder.java b/app/src/main/java/org/fdroid/fdroid/data/QueryBuilder.java
index 3168783e1..d74e560d9 100644
--- a/app/src/main/java/org/fdroid/fdroid/data/QueryBuilder.java
+++ b/app/src/main/java/org/fdroid/fdroid/data/QueryBuilder.java
@@ -20,10 +20,6 @@ abstract class QueryBuilder {
public abstract void addField(String field);
- protected int fieldCount() {
- return fields.size();
- }
-
public void addFields(String[] fields) {
for (final String field : fields) {
addField(field);
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 631968aa4..9b0223b6b 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -516,7 +516,7 @@