From f8648ff4c43bd4ad502c519af3ff93e848e1fe2a Mon Sep 17 00:00:00 2001
From: zab2 <zab2@mail.i2p>
Date: Fri, 28 Jun 2013 14:56:55 +0000
Subject: [PATCH] Explicitly check the type of I2PSocketManager

---
 .../src/net/i2p/client/streaming/I2PSocketManagerFactory.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
index b7e5cfb61e..e7990f28f6 100644
--- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
+++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
@@ -180,7 +180,9 @@ public class I2PSocketManagerFactory {
         I2PAppContext context = I2PAppContext.getGlobalContext();
         String classname = opts.getProperty(PROP_MANAGER, DEFAULT_MANAGER);
         try {
-            Class cls = Class.forName(classname);
+            Class<?> cls = Class.forName(classname);
+            if (!I2PSocketManager.class.isAssignableFrom(cls))
+                throw new IllegalArgumentException(classname + " is not an I2PSocketManager");
             Constructor<I2PSocketManager> con = (Constructor<I2PSocketManager>)
                   cls.getConstructor(new Class[] {I2PAppContext.class, I2PSession.class, Properties.class, String.class});
             I2PSocketManager mgr = con.newInstance(new Object[] {context, session, opts, name});
-- 
GitLab