Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/org/adblockplus/sbrowser/contentblocker/engine/Subscription.java

Issue 29372653: Issue 4813 - UTFDataFormatException while serializing filter (Closed)
Patch Set: Created Jan. 18, 2017, 1:36 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/org/adblockplus/sbrowser/contentblocker/engine/Subscription.java
===================================================================
--- a/src/org/adblockplus/sbrowser/contentblocker/engine/Subscription.java
+++ b/src/org/adblockplus/sbrowser/contentblocker/engine/Subscription.java
@@ -23,16 +23,17 @@ import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.StringReader;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -431,17 +432,19 @@ final class Subscription
filtersOut.writeInt(0);
}
else
{
filtersOut.writeInt(this.filters.size());
filtersOut.writeUTF(createFilterHash(new ArrayList<String>(this.filters)));
for (final String s : this.filters)
{
- filtersOut.writeUTF(s);
+ final byte[] b = s.getBytes(StandardCharsets.UTF_8);
anton 2017/01/23 06:49:40 StandardCharsets is available starting Java 7. If
diegocarloslima 2017/01/30 17:14:30 For instance, I'll use Charset.forName("UTF-8"). T
+ filtersOut.writeInt(b.length);
+ filtersOut.write(b);
}
}
}
finally
{
filtersOut.close();
}
}
@@ -488,17 +491,20 @@ final class Subscription
this.filters = null;
}
else
{
this.filters = new HashSet<String>();
final String filtersHash = in.readUTF();
for (int i = 0; i < numFilters; i++)
{
- this.filters.add(in.readUTF());
+ final int length = in.readInt();
+ final byte[] b = new byte[length];
+ in.readFully(b);
+ this.filters.add(new String(b, StandardCharsets.UTF_8));
}
this.filtersValid = createFilterHash(new ArrayList<String>(this.filters)).equals(
filtersHash);
Log.d(TAG, "Filters valid: " + this.filtersValid);
}
}
finally
{
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld