From bfb55570999f422ab5e648bb11d56ab9d29505af Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Thu, 25 Jul 2024 08:59:36 -0400
Subject: [PATCH] i2ptunnel: Additional fixes for invalid entries in filter
 file (Gitlab #483)

as reported by drzed
---
 .../i2p/i2ptunnel/access/FilterDefinitionElement.java    | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/FilterDefinitionElement.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/FilterDefinitionElement.java
index c9bace8aa7..74ae27d02d 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/FilterDefinitionElement.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/FilterDefinitionElement.java
@@ -33,9 +33,14 @@ abstract class FilterDefinitionElement {
      * Utility method to create a Hash object from a .b32 string
      */
     protected static Hash fromBase32(String b32) throws InvalidDefinitionException {
+        if (b32.length() != 60)
+            throw new InvalidDefinitionException("Invalid b32 " + b32);
         if (!b32.endsWith(".b32.i2p"))
             throw new InvalidDefinitionException("Invalid b32 " + b32);
-        b32 = b32.substring(0, b32.length() - 8);
-        return new Hash(Base32.decode(b32));
+        String s = b32.substring(0, 52);
+        byte[] b = Base32.decode(s);
+        if (b == null)
+            throw new InvalidDefinitionException("Invalid b32 " + b32);
+        return Hash.create(b);
     }
 }
-- 
GitLab