aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java')
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java31
1 files changed, 22 insertions, 9 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index 10b1f1b77..bc62f3ae3 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -29,6 +29,7 @@ import android.util.Log;
import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
import com.android.inputmethod.dictionarypack.MD5Calculator;
+import com.android.inputmethod.latin.define.DecoderSpecificConstants;
import com.android.inputmethod.latin.utils.DictionaryInfoUtils;
import com.android.inputmethod.latin.utils.DictionaryInfoUtils.DictionaryInfo;
import com.android.inputmethod.latin.utils.FileTransforms;
@@ -67,6 +68,11 @@ public final class BinaryDictionaryFileDumper {
private static final byte[] MAGIC_NUMBER_VERSION_2 =
new byte[] { (byte)0x9B, (byte)0xC1, (byte)0x3A, (byte)0xFE };
+ private static final boolean SHOULD_VERIFY_MAGIC_NUMBER =
+ DecoderSpecificConstants.SHOULD_VERIFY_MAGIC_NUMBER;
+ private static final boolean SHOULD_VERIFY_CHECKSUM =
+ DecoderSpecificConstants.SHOULD_VERIFY_CHECKSUM;
+
private static final String DICTIONARY_PROJECTION[] = { "id" };
private static final String QUERY_PARAMETER_MAY_PROMPT_USER = "mayPrompt";
@@ -302,13 +308,18 @@ public final class BinaryDictionaryFileDumper {
checkMagicAndCopyFileTo(bufferedInputStream, bufferedOutputStream);
bufferedOutputStream.flush();
bufferedOutputStream.close();
- final String actualRawChecksum = MD5Calculator.checksum(
- new BufferedInputStream(new FileInputStream(outputFile)));
- Log.i(TAG, "Computed checksum for downloaded dictionary. Expected = " + rawChecksum
- + " ; actual = " + actualRawChecksum);
- if (!TextUtils.isEmpty(rawChecksum) && !rawChecksum.equals(actualRawChecksum)) {
- throw new IOException("Could not decode the file correctly : checksum differs");
+
+ if (SHOULD_VERIFY_CHECKSUM) {
+ final String actualRawChecksum = MD5Calculator.checksum(
+ new BufferedInputStream(new FileInputStream(outputFile)));
+ Log.i(TAG, "Computed checksum for downloaded dictionary. Expected = "
+ + rawChecksum + " ; actual = " + actualRawChecksum);
+ if (!TextUtils.isEmpty(rawChecksum) && !rawChecksum.equals(actualRawChecksum)) {
+ throw new IOException(
+ "Could not decode the file correctly : checksum differs");
+ }
}
+
final File finalFile = new File(finalFileName);
finalFile.delete();
if (!outputFile.renameTo(finalFile)) {
@@ -444,9 +455,11 @@ public final class BinaryDictionaryFileDumper {
if (readMagicNumberSize < length) {
throw new IOException("Less bytes to read than the magic number length");
}
- if (!Arrays.equals(MAGIC_NUMBER_VERSION_2, magicNumberBuffer)) {
- if (!Arrays.equals(MAGIC_NUMBER_VERSION_1, magicNumberBuffer)) {
- throw new IOException("Wrong magic number for downloaded file");
+ if (SHOULD_VERIFY_MAGIC_NUMBER) {
+ if (!Arrays.equals(MAGIC_NUMBER_VERSION_2, magicNumberBuffer)) {
+ if (!Arrays.equals(MAGIC_NUMBER_VERSION_1, magicNumberBuffer)) {
+ throw new IOException("Wrong magic number for downloaded file");
+ }
}
}
output.write(magicNumberBuffer);