[tor-commits] [collector/master] Check "extra-info" lines more carefully.

karsten at torproject.org karsten at torproject.org
Fri Sep 30 13:48:49 UTC 2016


commit 5b6f2b50a48f49eea0f7b349b02d2c3391ad4121
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Wed Sep 28 16:28:55 2016 +0200

    Check "extra-info" lines more carefully.
---
 .../torproject/collector/bridgedescs/SanitizedBridgesWriter.java  | 5 +++++
 .../collector/bridgedescs/SanitizedBridgesWriterTest.java         | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/src/main/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriter.java b/src/main/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriter.java
index ac3e39f..abec743 100644
--- a/src/main/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriter.java
+++ b/src/main/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriter.java
@@ -1071,6 +1071,11 @@ public class SanitizedBridgesWriter extends CollecTorMain {
          * its hash in the sanitized descriptor. */
         String[] parts = line.split(" ");
         if (line.startsWith("extra-info ")) {
+          if (parts.length < 3) {
+            logger.debug("Illegal line in extra-info descriptor: '" + line
+                + "'.  Skipping descriptor.");
+            return;
+          }
           hashedBridgeIdentity = DigestUtils.shaHex(Hex.decodeHex(
               parts[2].toCharArray())).toLowerCase();
           scrubbed = new StringBuilder("extra-info " + parts[1] + " "
diff --git a/src/test/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriterTest.java b/src/test/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriterTest.java
index 8634eae..9f3857f 100644
--- a/src/test/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriterTest.java
+++ b/src/test/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriterTest.java
@@ -414,6 +414,14 @@ public class SanitizedBridgesWriterTest {
   }
 
   @Test
+  public void testExtraInfoDescriptorExtraInfoLineTruncated()
+      throws Exception {
+    this.defaultExtraInfoDescriptorBuilder.replaceLineStartingWith(
+        "extra-info ", Arrays.asList("extra-info "));
+    this.runTest();
+  }
+
+  @Test
   public void testExtraInfoDescriptorExtraInfoInvalidHex()
       throws Exception {
     this.defaultExtraInfoDescriptorBuilder.replaceLineStartingWith(





More information about the tor-commits mailing list