From 103b2265ee51f3d0f9675686d7f91e83c9aa9f08 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 11 May 2016 16:39:40 +0200 Subject: [PATCH 1/4] make sure HTTP servers are able to skip the right amount This should fix the PMD error: "Check the value returned by the skip() method of an InputStream to see if the requested number of bytes has been skipped." --- app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java | 5 ++++- .../org/fdroid/fdroid/net/bluetooth/BluetoothServer.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java b/app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java index d6d2f7633..7d893287d 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java +++ b/app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java @@ -265,7 +265,10 @@ public class LocalHTTPD extends NanoHTTPD { return (int) dataLen; } }; - fis.skip(startFrom); + long skipped = fis.skip(startFrom); + if (skipped != startFrom) { + throw new IOException("unable to skip the required " + startFrom + " bytes."); + } res = createResponse(Response.Status.PARTIAL_CONTENT, mime, fis); res.addHeader("Content-Length", String.valueOf(dataLen)); diff --git a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothServer.java b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothServer.java index dc935199f..ba2a4f518 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothServer.java +++ b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothServer.java @@ -303,7 +303,10 @@ public class BluetoothServer extends Thread { return (int) dataLen; } }; - fis.skip(startFrom); + long skipped = fis.skip(startFrom); + if (skipped != startFrom) { + throw new IOException("unable to skip the required " + startFrom + " bytes."); + } res = createResponse(NanoHTTPD.Response.Status.PARTIAL_CONTENT, mime, fis); res.addHeader("Content-Length", String.valueOf(dataLen)); From 23dad31426f24c19229f6f524eefe16f670d5d19 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 11 May 2016 16:40:59 +0200 Subject: [PATCH 2/4] make AndroidXMLDecompress a little less kludgey #623 https://gitlab.com/fdroid/fdroidclient/issues/623 --- .../main/java/org/fdroid/fdroid/AndroidXMLDecompress.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/AndroidXMLDecompress.java b/app/src/main/java/org/fdroid/fdroid/AndroidXMLDecompress.java index 86ed380d3..7391c1dd0 100644 --- a/app/src/main/java/org/fdroid/fdroid/AndroidXMLDecompress.java +++ b/app/src/main/java/org/fdroid/fdroid/AndroidXMLDecompress.java @@ -89,7 +89,8 @@ public class AndroidXMLDecompress { } int offset = xmlTagOffset; - while (offset < binaryXml.length) { + // we only need the first start tag + if (offset < binaryXml.length) { int tag0 = littleEndianWord(binaryXml, offset); if (tag0 == START_TAG) { @@ -114,8 +115,6 @@ public class AndroidXMLDecompress { } return attributes; } - // we only need the first start tag - break; } return new HashMap<>(0); } From 93433cff05b105b929116dfb2c0539792e00ed5d Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 11 May 2016 16:46:40 +0200 Subject: [PATCH 3/4] equals() and hashCode() should always be overridden together This addressed the PMD error: "Ensure you override both equals() and hashCode()" #623 https://gitlab.com/fdroid/fdroidclient/issues/623 --- .../org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java | 5 +++++ .../java/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java index 2ff605da2..4dac48bec 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java @@ -34,6 +34,11 @@ public class BluetoothPeer implements Peer { return peer != null && peer instanceof BluetoothPeer && ((BluetoothPeer) peer).device.getAddress().equals(device.getAddress()); } + @Override + public int hashCode() { + return device.getAddress().hashCode(); + } + @Override public String getRepoAddress() { return "bluetooth://" + device.getAddress().replace(':', '-') + "/fdroid/repo"; diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java index 1f3e5fc51..ae09329d6 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java @@ -36,6 +36,11 @@ public class BonjourPeer extends WifiPeer { return false; } + @Override + public int hashCode() { + return getFingerprint().hashCode(); + } + @Override public String getRepoAddress() { return serviceInfo.getRepoAddress(); From 7fbdfaaae7f3a73afb5c81b25ebfbbaac4a57c7f Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 12 May 2016 09:36:08 +0200 Subject: [PATCH 4/4] enable PMD's java-basic ruleset * CollapsibleIfStatements is pedantic * that one NOPMD is for debug logging, it'll go away closes #623 https://gitlab.com/fdroid/fdroidclient/issues/623 --- .../org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java | 2 +- config/pmd/rules.xml | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java b/app/src/main/java/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java index 6b0b46aaf..c711d3ec6 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java @@ -740,7 +740,7 @@ public class SwapWorkflowActivity extends AppCompatActivity { public void logStatus() { - if (true) return; + if (true) return; // NOPMD String message = ""; if (service == null) { diff --git a/config/pmd/rules.xml b/config/pmd/rules.xml index 242403a32..6ad35b90e 100644 --- a/config/pmd/rules.xml +++ b/config/pmd/rules.xml @@ -5,7 +5,9 @@ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"> - + + +