From 87109c8fef90f67da233cc50215c2fad43775f4f Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 25 Jun 2019 17:58:52 +0000 Subject: [PATCH] imagegen: Catch render error (ticket #2507) --- .../java/net/i2p/imagegen/IdenticonServlet.java | 14 +++++++++++++- history.txt | 8 ++++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/IdenticonServlet.java b/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/IdenticonServlet.java index 532d695f3..deec8e304 100644 --- a/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/IdenticonServlet.java +++ b/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/IdenticonServlet.java @@ -17,8 +17,10 @@ import com.docuverse.identicon.IdenticonRenderer; import com.docuverse.identicon.IdenticonUtil; import com.docuverse.identicon.NineBlockIdenticonRenderer2; +import net.i2p.I2PAppContext; import net.i2p.data.Hash; import net.i2p.util.ConvertToHash; +import net.i2p.util.Log; /** @@ -146,12 +148,22 @@ public class IdenticonServlet extends HttpServlet { if (cache == null || (imageBytes = cache.get(identiconETag)) == null) { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); - RenderedImage image = renderer.render(code, size); + RenderedImage image; + try { + image = renderer.render(code, size); + } catch (Throwable t) { + // java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE + Log log = I2PAppContext.getGlobalContext().logManager().getLog(IdenticonServlet.class); + log.logAlways(Log.WARN, "Identicon render failure: " + t); + response.setStatus(403); + return; + } ImageIO.write(image, IDENTICON_IMAGE_FORMAT, byteOut); imageBytes = byteOut.toByteArray(); if (cache != null) cache.add(identiconETag, imageBytes); } else { + // FIXME this sends 403 if cached response.setStatus(403); return; } diff --git a/history.txt b/history.txt index 33eadbd4c..b9249ddaf 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,11 @@ +2019-06-25 zzz + * I2CP: Prevent sending message to a local meta destination + * imagegen: Catch render error (ticket #2507) + * Router: Disable MessageHistory job on Android + * Streaming: + - Check that destinations match in signatures + - Increase size of recently-closed cache + 2019-06-22 zzz * Console: New logo * I2CP: Ensure that callbacks are called on abnormal close diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index cef568607..59b43357e 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 12; + public final static long BUILD = 13; /** for example "-test" */ public final static String EXTRA = "-rc";