From 27add1ea4774bb3b10dc5daad4e7efaf1f0032b0 Mon Sep 17 00:00:00 2001 From: Fuzzlemann Date: Sun, 20 Aug 2017 02:35:55 +0200 Subject: [PATCH] Add Exception handling when the POST Request is encoded in the wrong encoding --- .../plan/ui/webserver/WebServer.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/webserver/WebServer.java b/Plan/src/main/java/com/djrapitops/plan/ui/webserver/WebServer.java index 17658e1f6..5cf819295 100644 --- a/Plan/src/main/java/com/djrapitops/plan/ui/webserver/WebServer.java +++ b/Plan/src/main/java/com/djrapitops/plan/ui/webserver/WebServer.java @@ -268,13 +268,22 @@ public class WebServer { } private String readPOSTRequest(HttpExchange exchange) throws IOException { + byte[] bytes; + try (InputStream in = exchange.getRequestBody()) { ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buf = new byte[4096]; for (int n = in.read(buf); n > 0; n = in.read(buf)) { out.write(buf, 0, n); } - return new String(out.toByteArray(), "ISO-8859-1"); + + bytes = out.toByteArray(); + } + + try { + return new String(bytes, "ISO-8859-1"); + } catch (Exception e) { + return null; } } @@ -283,11 +292,18 @@ public class WebServer { if (args.length < 3) { String error = "API Method not specified"; - return PageCacheHandler.loadPage(error, () -> new NotFoundResponse(error)); + return PageCacheHandler.loadPage(error, () -> new BadRequestResponse(error)); } String method = args[2]; String response = readPOSTRequest(exchange); + + if (response == null) { + String error = "Error at reading the POST request." + + "Note that the Encoding must be ISO-8859-1."; + return PageCacheHandler.loadPage(error, () -> new BadRequestResponse(error)); + } + Map variables = readVariables(response); //TODO ADD CHECK IF SERVER KEY VALID