diff --git a/app/lint.xml b/app/lint.xml index f38e22391..9b706ddf7 100644 --- a/app/lint.xml +++ b/app/lint.xml @@ -9,6 +9,7 @@ + @@ -23,10 +24,12 @@ + + diff --git a/app/src/full/java/kellinwood/logging/AbstractLogger.java b/app/src/full/java/kellinwood/logging/AbstractLogger.java index 6a33b46c5..c2c3e4e0c 100644 --- a/app/src/full/java/kellinwood/logging/AbstractLogger.java +++ b/app/src/full/java/kellinwood/logging/AbstractLogger.java @@ -18,12 +18,13 @@ package kellinwood.logging; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; public abstract class AbstractLogger implements LoggerInterface { protected String category; - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.ENGLISH); public AbstractLogger(String category) { this.category = category; diff --git a/app/src/full/java/kellinwood/zipio/ZipListingHelper.java b/app/src/full/java/kellinwood/zipio/ZipListingHelper.java index 1f7c74956..41bde0ba7 100644 --- a/app/src/full/java/kellinwood/zipio/ZipListingHelper.java +++ b/app/src/full/java/kellinwood/zipio/ZipListingHelper.java @@ -28,7 +28,7 @@ import java.util.Locale; */ public class ZipListingHelper { - static DateFormat dateFormat = new SimpleDateFormat("MM-dd-yy HH:mm"); + static DateFormat dateFormat = new SimpleDateFormat("MM-dd-yy HH:mm", Locale.ENGLISH); public static void listHeader(LoggerInterface log) { log.debug(" Length Method Size Ratio Date Time CRC-32 Name"); diff --git a/app/src/main/java/org/fdroid/fdroid/compat/PRNGFixes.java b/app/src/main/java/org/fdroid/fdroid/compat/PRNGFixes.java index 7dc71f525..a17770f8c 100644 --- a/app/src/main/java/org/fdroid/fdroid/compat/PRNGFixes.java +++ b/app/src/main/java/org/fdroid/fdroid/compat/PRNGFixes.java @@ -10,6 +10,7 @@ package org.fdroid.fdroid.compat; * freely, as long as the origin is not misrepresented. */ +import android.annotation.SuppressLint; import android.os.Build; import android.os.Process; import android.util.Log; @@ -31,18 +32,23 @@ import java.security.Security; /** * Fixes for the output of the default PRNG having low entropy. - * + *

* 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 @@ Descargar usando WiFi Descargar usando tus datos Usar siempre esta conexion cuando este disponible - Usar esta conexion unicamente cuando seleccione descargar + Usar esta conexion únicamente cuando seleccione descargar No descargar nada usando esta conexion Esta aplicación tiene una firma de seguridad débil Esta aplicación contiene una vulnerabilidad de seguridad conocida diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 5628eb702..4b3e4c806 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -536,7 +536,7 @@ Repositórios permitidos para instalar/desinstalar aplicativos Todas as atualizações estão desativadas por causa das configurações de Dados/WiFi - Não é possível atualizar, o código fonte não está mais disponivel. + Não é possível atualizar, o código fonte não está mais disponível. Repositório de metadados podem incluir solicitações de envio para instalar ou desinstalar aplicativos Compartilhar aplicativos instalados